web-dev-qa-db-fra.com

Vérifier la date entre deux dates dans T-SQL

J'ai une procédure stockée où veux vérifier qu'une date est entre une date fixe et la date/heure actuelle (avec GETDATE()):

SELECT
    a, b
FROM myTbl
WHERE
    DATE BETWEEN 'Day start datetime' AND GETDATE()

...par exemple :

WHERE
    DATE BETWEEN '2013-09-10 00:00:00.00' AND 'GETDATE()'

Comment faire?

7
GeoVIP

Une paire d'appels DATEADD/DATEDIFF arrondira la date à minuit précédent:

SELECT a , b
FROM myTbl
WHERE DATE BETWEEN DATEADD(day,DATEDIFF(day,0,GETDATE()),0) and GETDATE()

Sinon, si vous utilisez SQL Server 2008 ou une version ultérieure:

SELECT a , b
FROM myTbl
WHERE DATE BETWEEN CONVERT(date,GETDATE()) and GETDATE()
14

'GETDATE()' est un littéral de chaîne, GETDATE() est une fonction T-SQL.

Votre requête devrait ressembler à:

SELECT a , b
FROM myTbl
WHERE DATE BETWEEN '2013-09-10 00:00:00.0' and GETDATE()
6
Darren

Je pense que WHERE DATE BETWEEN '2013-09-10 00:00:00.00' and GETDATE() (sans les guillemets simples autour de l'appel GETDATE()) devrait fonctionner correctement.

1
Onkel Toob

Vous pouvez obtenir Day start date time en convertissant la valeur renvoyée par Getdate () en un type Date et à nouveau en Date/Date comme ci-dessous.

select a,b
from myTbl
where [date] between convert(datetime,convert([date], getdate())) 
                 and getdate()
0
Kaf