一尘不染

在SQL中从datetime获取日期

sql

datecreated在表中有字段。它包含的值为“ 2009-12-30 11:47:20:297”,我有这样的查询:

select * 
  from table 
 where DateCreated = getdate()

尽管今天的日期存在一行,但是在执行上述查询时我没有得到这一行。有人可以帮忙吗?


阅读 315

收藏
2021-03-10

共1个答案

一尘不染

您的查询未返回期望的行的原因是因为GETDATE()返回了执行查询时的日期和时间部分。DateCreated列中的值与时间部分不匹配,因此不会返回任何行。

有多种构造查询的方法,以便查询仅基于日期组件来评估日期。这是一个例子:

WHERE YEAR(datecreated) = YEAR(GETDATE())
  AND MONTH(datecreated) = MONTH(GETDATE())
  AND DAY(datecreated) = DAY(GETDATE())

不幸的现实是,使用列上的函数进行的任何查询都意味着,如果列上存在索引,则无法使用该索引。

2021-03-10