我正在尝试编写一个查询,其中从句是当员工的入职日期是今天时。
select * from tbl_employees
where Startdate = getdate()
问题在于Startdate是'2014-12-09 00:00:00.000',而函数
getdate
返回的日期和时间为'2014-12-09 08:25:16.013'。我该如何编写一个只考虑日期的查询?
我正在尝试编写一个查询,其中从句是当员工的入职日期是今天时。
select * from tbl_employees
where Startdate = getdate()
getdate
返回的日期和时间为'2014-12-09 08:25:16.013'。你只需要日期部分。简单的方法是:
select *
from tbl_employees
where cast(Startdate as date) = cast(getdate() as date);
然而,如果您想使用索引,请不要将列放在函数调用中。因此,以下方式更好:
where (StartDate >= cast(getdate() as date) and StartDate < cast(getdate() + 1 as date))
select * from tbl_employees
where CONVERT(VARCHAR(10),Startdate,110) = CONVERT(VARCHAR(10),GETDATE(),110)
IF CAST(DateField1 AS DATE) = CAST(DateField2 AS DATE)
或者
CONVERT(VARCHAR(10), GETDATE(), 112)
SELECT CONVERT (date, SYSDATETIME())
,CONVERT (date, SYSDATETIMEOFFSET())
,CONVERT (date, SYSUTCDATETIME())
,CONVERT (date, CURRENT_TIMESTAMP)
,CONVERT (date, GETDATE())
,CONVERT (date, GETUTCDATE());
/* Returned
SYSDATETIME() 2007-05-03
SYSDATETIMEOFFSET()2007-05-03
SYSUTCDATETIME() 2007-05-04
CURRENT_TIMESTAMP 2007-05-03
GETDATE() 2007-05-03
GETUTCDATE() 2007-05-04
*/
来自: http://msdn.microsoft.com/zh-cn/library/ms188751.aspx
因此,使用其中任何一个都将仅给出日期