Trouver le Même jour de l'Année Précédente Donnée par l'Actuel Date de l'Année dans SQL Server
Je travaille avec SQL Server, Le scénario est de trouver le Même Jour de la Date de l'Année Précédente de la Journée d'aujourd'Hui.
Supposons que 2014-03-06 est aujourd'Hui la Date et le Jour est jeudi je veux Trouver le Même jour dans le Précédent se trouve dans la même semaine .qui est 2013-03-07
tout organisme peut aider?
VOICI ce que j'Ai Écrit:
DECLARE @DateFrom AS DATETIME
DECLARE @DateTo AS DATETIME
SET @DateFrom = '2014-01-01'
SET @DateTo = '2014-02-10'
DECLARE @Count AS INT
SET @Count = DATEDIFF(DAY, @DateFrom, @DateTo)
CREATE TABLE #current_year /*This Year*/
(
[Date] DATETIME ,
WeekNum INT,
[Day] VARCHAR(20),
Data INT
)
CREATE TABLE #last_year /*This Year -1*/
(
[Date] DATETIME ,
WeekNum INT,
[Day] VARCHAR(20),
Data INT
)
WHILE ( @Count > 0 )
BEGIN
INSERT INTO #current_year
VALUES ( CONVERT(VARCHAR(10), @DateFrom, 101),
DATEPART(week,@DateFrom),
DATENAME(weekday, @DateFrom),@Count)
INSERT INTO #last_year
VALUES ( CONVERT(VARCHAR(10), DATEADD(YEAR, -1, @DateFrom), 101),
DATEPART(week,DATEADD(YEAR,1,@DateFrom)),
DATENAME(weekday, DATEADD(YEAR, -1, @DateFrom)),@Count)
SET @DateFrom = DATEADD(day, 1, @DateFrom)
SET @Count = @Count - 1
END
SELECT * from #current_year
SELECT * from #last_year
SELECT CONVERT(varchar(10),#current_year.[Date],111) AS CYDate,
--ISNULL(CONVERT(varchar(10),#last_year.[Date],111) ,/*CONVERT(varchar(10),DateAdd(dd, 1, DATEADD(yy, -1, #current_year.Date)),111)*/) AS LYDate
--CONVERT(varchar(10),#last_year.[Date],111) AS LYDate
Coalesce(CONVERT(varchar(10),#last_year.[Date],111) ,DateAdd(dd, 1, DATEADD(yy, -1, #current_year.Date))) AS LYDate,
#current_year.Data AS CD,
#last_year.Data AS LD
FROM #current_year
--LEFT JOIN #last_year ON #last_year.WeekNum = #current_year.WeekNum
-- AND #last_year.[Day] = #current_year.[Day]
Left JOIN #last_year ON #last_year.WeekNum = DatePart(wk, GETDATE())
DROP TABLE #current_year
DROP TABLE #last_year
Voici le résultat:
Voici le résultat après l'ajout de votre solution, maintenant dans left join il exclut (NULL) données de l'année précédente
Comment savons-nous que le jeudi est le seul que nous voulons? I. e. si aujourd'hui était
2014-03-07
, un vendredi, voulons-nous pour obtenir 2013-03-01
ou 2013-03-08
? Il y a probablement beaucoup de cas limites, en fonction de ce que vos définitions sont, fondé sur le début et la fin du mois et, éventuellement, les années bissextiles peut être un facteur. Définir ce qui fait une semaine particulière de l'année précédente "de la même semaine".
OriginalL'auteur DareDevil | 2014-03-06
Vous devez vous connecter pour publier un commentaire.
Fondamentalement, vous avez besoin de trouver la différence en jours entre les mêmes dates, dans le présent et pour les années antérieures, puis comprendre, un jour "la différence" par mod 7, et de la somme avec la date dans l'année précédente:
Retourne
OriginalL'auteur Lanorkin
Essayer
OriginalL'auteur MusicLovingIndianGirl
donne
Wednesday
donne
Thursday
edit:
donne
'2013-03-07 17:30:16.590'
vous avez besoin de jeter la date que vous exigence..
mise à jour:
changement à la présente partie,
dans votre cas:
mise à jour 2:
De sortie:
ou
de sortie:
choisir qui est nécessaire à votre sortie.
Copain de sa belle comme sa en me donnant la date exacte, mais la chose est, je suis de l'affichage des Données pour les deux années de la même journée, en dépit de Dates , et je l'ai Laissé de jointure avec la table source et des Conditions d'application de l'égalité de Semaine et jour de la Semaine, Mais sa me donnant la semaine précédente où je ne pouvais pas correspondre à la jours.
Je poste mon Problème? avec les Requêtes et le long de capture d'Écran?
mise à jour de ma réponse, vérifier si les travaux..
copain j'ai fait comme vous avez dit, mais le problème c'est que j'ai reposté mon problème, en ajoutant Rejoindre au-dessous, Il atteint 0 Zéros de Table jointe, Veuillez exécuter la requête et voir le résultat
OriginalL'auteur Suraj Shrestha
Retrun valeur :
OriginalL'auteur mehdi lotfi