我的数据库日期存储在smalldatetime中。 现在,如果我需要根据(例如今天的日期等于数据库中的日期)过滤结果,那么最好的方法是什么?
select * from tbl Emp where Emp.date = cast(getdate() as smalldatetime)
//这与日期不匹配
我发现的另一种方式,但不确定是否在表格中投射日期会影响性能,如:
select * from tbl Emp where cast(Emp.date as date) = cast(getdate() as date)
答案 0 :(得分:2)
这种方法准确无误:
where cast(Emp.date as date) = cast(getdate() as date)
此方法准确,可以使用索引:
where (Emp.date >= cast(getdate() as date) and
Emp.date < cast(getdate() + 1 as date))
+ 1
是SQL Server的一种便利,它将一天的值增加到datetime
。但是,你也可以使用
where (Emp.date >= cast(getdate() as date) and
Emp.date < dateadd(day, 1, cast(getdate() as date))
)