2012-07-06 112 views
0

我有一列名LOGDATE其中有日期的格式如下SQL SERVER 2008的时间差

2011-01-04 23:35:44.000

我想在6月1日之间进行选择的其他列2011至2011年6月30日,以便查询应该是

select * from abc where logdate = ? 

回答

5

您可以使用>=<

SELECT * 
FROM abc 
WHERE logdate >= '20110601' AND logdate < '20110701' 
+0

谢谢,我如何将这些记录导出到CSV,它可以自动完成? – user580950 2012-07-06 17:24:32

+0

@ user580950,导出为CSV,在管理工作室中右键单击结果窗格>将结果另存为... – Somantra 2012-07-06 17:26:03

+0

感谢您的帮助 – user580950 2012-07-06 17:27:17

0

假设LogDateDateTime列,您可以使用下面的查询,以获得全方位的月份:

WHERE logdate >= '2011-06-01' AND logdate < '2011-07-01' 
1

有很多方法来操纵SQL日期时间和字符串代表SQL日期时间:

http://msdn.microsoft.com/en-us/library/ms186724(v=sql.105).aspx

一个非常简单的方式做,这是使用> = <运营商。

SELECT * 
FROM abc 
WHERE logdate >= '20110601' 
    AND logdate < '20110701' 

要使用< 7月1日,而不是< = 6月30日的原因是字符串解析的日期假定它是在该日的午夜,这将在以后排除任何价值超过6月30日上午12点

+0

只需注意YYYY-MM-DD格式 - 这可能会因设置而中断(例如,尝试“SET LANGUAGE FRENCH”)。使用YYYYMMDD更安全。 – 2012-07-06 17:31:50

+0

这是一个非常好的点亚伦。 – Erica 2012-07-06 18:04:50