我有一个存储过程,想要检查一个日期是否在一个固定日期和当前日期/时间(使用GETDATE()
)之间:
SELECT
a, b
FROM myTbl
WHERE
DATE BETWEEN 'Day start datetime' AND GETDATE()
例如:
WHERE
DATE BETWEEN '2013-09-10 00:00:00.00' AND 'GETDATE()'
如何做呢?
我有一个存储过程,想要检查一个日期是否在一个固定日期和当前日期/时间(使用GETDATE()
)之间:
SELECT
a, b
FROM myTbl
WHERE
DATE BETWEEN 'Day start datetime' AND GETDATE()
例如:
WHERE
DATE BETWEEN '2013-09-10 00:00:00.00' AND 'GETDATE()'
使用一对 DATEADD
/DATEDIFF
调用可以将日期向下舍入至前一天的午夜:
SELECT a , b
FROM myTbl
WHERE DATE BETWEEN DATEADD(day,DATEDIFF(day,0,GETDATE()),0) and GETDATE()
或者,如果您使用的是SQL Server 2008或更高版本:
SELECT a , b
FROM myTbl
WHERE DATE BETWEEN CONVERT(date,GETDATE()) and GETDATE()
GETDATE()
是T-SQL函数,而'GETDATE()'
则是字符串文字。
您的查询应该像这样:
SELECT a , b
FROM myTbl
WHERE DATE BETWEEN '2013-09-10 00:00:00.0' and GETDATE()
WHERE DATE BETWEEN '2013-09-10 00:00:00.00' and GETDATE()
(不需要在GETDATE()
调用周围加单引号)应该完全可以工作。您可以通过将Getdate()返回值转换为日期类型,然后再次转换为Datetime来获取日期开始时间
,如下所示。
select a,b
from myTbl
where [date] between convert(datetime,convert([date], getdate()))
and getdate()