Est-il possible de définir le début de la semaine pour la fonction T-SQL DATEDIFF?
- Je utiliser DATEDIFF fonction pour filtrer les enregistrements ajoutés cette semaine seulement:
DATEDIFF(week, DateCreated, GETDATE()) = 0
et j'ai remarqué qu'il est supposé que la semaine commence le dimanche. Mais dans mon cas, j'ai préféré mettre en début de semaine, le lundi. Est-il possible, en quelque sorte, en T-SQL?
Merci!
Mise à jour:
Ci-dessous est un exemple montrant que DATEDIFF ne vérifie pas @@DATEFIRST variable donc j'ai besoin d'une autre solution.
SET DATEFIRST 1;
SELECT
DateCreated,
DATEDIFF(week, DateCreated, CAST('20090725' AS DATETIME)) AS D25,
DATEDIFF(week, DateCreated, CAST('20090726' AS DATETIME)) AS D26
FROM
(
SELECT CAST('20090724' AS DATETIME) AS DateCreated
UNION
SELECT CAST('20090725' AS DATETIME) AS DateCreated
) AS T
De sortie:
DateCreated D25 D26
----------------------- ----------- -----------
2009-07-24 00:00:00.000 0 1
2009-07-25 00:00:00.000 0 1
(2 row(s) affected)
26 Juil 2009, c'est dimanche, et je veux DATEDIFF retourne 0 dans la troisième colonne.
source d'informationauteur Alexander Prokofyev
Vous devez vous connecter pour publier un commentaire.
Oui il est possible
de http://msdn.microsoft.com/en-us/library/ms181598.aspx
Il semble datediff de ne pas respecter la Datefirst, afin de faire faire courir comme ça
Volé
http://social.msdn.microsoft.com/Forums/en-US/transactsql/thread/8cc3493a-7ae5-4759-ab2a-e7683165320b
J'ai une autre solution
Ce devrait être plus facile à comprendre, corriger moi si je me trompe
Nous soustraire '-1' à partir de la date et de dimanche à samedi (qui est 7nth jour de la semaine)
et Mondey(2) premier jour de la semaine