我确信这是一个非常简单的问题,但我无法弄明白。这是我的疑问:
select column1 from table1 with(nolock)
where column1 like '2011-07-0[78]%'
order by column1 desc
正如你所知,我正在查询一行,寻找今天或昨天的时间戳。
其中一行中的完整时间戳如下所示:
2011-07-08 12:16:39.553
我已经多次做过类似的事情并没有遇到任何麻烦,但无论我尝试什么,上面的查询都不会返回任何结果。 (是的,列中有今天和昨天的时间戳)。
我是否犯了语法错误?我疯了吗?我的数据库中有侏儒在弄乱我的查询吗?请帮忙!非常感谢你!
答案 0 :(得分:1)
如果该字段的数据类型为datetime
或smalldatetime
,那么LIKE
将无法按预期工作。
您可以执行DATEPART
功能或BETWEEN
,例如:
WHERE DATEPART(Year, column1) = 2011
AND DATEPART(Month, column1) = 7
AND DATEPART(Day, column1) IN (7, 8)
或
WHERE column1 BETWEEN '2011-07-07' AND '2011-07-08'
请记住BETWEEN
是包容性的。
答案 1 :(得分:0)
试试这个:
select column1 from table1 with(nolock)
where Cast(column1 as DateTime) between '2011-07-07' AND '2011-07-08'
order by column1 desc