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?
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()
'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()
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.
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()