2017-05-24 96 views
0

我在SQL 2012中有一个名为transitiontime的表列,其中包含格式为2017-02-02 21:00:34.847的日期和时间。我试图在过去3个月内查询所有结果,我认为这只会要求我寻找2017-02,或者是这个结果。但是,如果我留下连字符,则查询失败。如何使用 - 在'%'%查询中

例子:

WHERE transitiontime like '%2017%' <- works but returns all values from this year 

WHERE transitiontime like '%2017-02%' <- Does not work at all 

WHERE transitiontime like '%2017%02%' <- Works but pulls in anything with 2017 and 02 in it, even if 02 is just in the time. 

我很想拿到近3个月在一个查询,但现在我想只能够从1个月拉。

+1

什么是'transitiontime'列的数据类型? –

+0

你的数据不是你想象的那样。连字符不是用于LIKE目的的特殊字符。如果可以的话,张贴一个能够重现问题的脚本。否则,这个“问题”不存在。 –

+0

你的意思是什么都不起作用?它是否返回错误,是否返回不正确的数据等? –

回答

2

我假设,因为您正在使用关键字“like”,字段“transitiontime”是一个char oder varchar字段吗?

变化领域为DateTime类型和使用下面的查询,以获得所有结果的最后三个月(适用于SQL):

SELECT * FROM table WHERE transitiontime >= DATEADD(month, -3, GETDATE()) 
+1

谢谢,这正是我所需要的。有效。 –