从SQL Server列中选择日期时间数据

时间:2009-12-17 20:30:46

标签: c# sql-server datetime select

SELECT [NEXT_UPDATE_TIME] 
FROM [BGREX_UpdateQueue]
WHERE [NEXT_UPDATE_TIME] <  18/12/2009

我想从列中的datetime值小于某个日期时间的记录中选择那些日期,我们需要进行比较。我有几个价值小于“18/12/2009”,但没有返回任何行。

以下语法不起作用

SELECT 18/12/2009 // returns 0 
WHERE [NEXT_UPDATE_TIME] < '18/12/2009'; // The conversion of a char data type to a datetime data type resulted in an out-of-range datetime value.

通过'18 / 12/2009'或其他日期的正确语法是什么?感谢

6 个答案:

答案 0 :(得分:3)

尝试:

select next_update_time from bgrex_updatequeue
  where next_update_time < '2009-12-18';

答案 1 :(得分:2)

尝试通用SQL日期格式YYYYMMDD

WHERE [NEXT_UPDATE_TIME] < '20091218'

请参阅standard SQL datetime formats

答案 2 :(得分:0)

这应该有效:

SELECT [NEXT_UPDATE_TIME] 
FROM [BGREX_UpdateQueue]
WHERE [NEXT_UPDATE_TIME] < '2009-12-18'

顺便说一下,由于日期的格式,您收到The conversion of a char data type to a datetime data type resulted in an out-of-range datetime value.错误,如果您尝试12/18/2009,它也应该有效,但上面的查询是我认为最好的。

答案 3 :(得分:0)

如果您使用的是DataView,可以轻松完成此操作(例如在日期之间):

myDataView = new DataView(myDataSet.Tables["TABLE"], "TIMESTAMP >= '" + Convert.ToDateTime(fromDate) + "' AND TIMESTAMP <= '" + Convert.ToDateTime(toDate) + "'", "TIMESTAMP", DataViewRowState.CurrentRows);

toDate和fromDate的类型为string

还有一篇关于Working with SQL Server Date/Time Variables: Part Three - Searching for Particular Date Values and Ranges

的文章

答案 4 :(得分:-1)

在这种情况下,

DATEDIFF是你的朋友。

答案 5 :(得分:-2)

您的示例中的查询缺少日期周围的引号,它应该是:

SELECT [NEXT_UPDATE_TIME] 
FROM [BGREX_UpdateQueue]
WHERE [NEXT_UPDATE_TIME] <  '18/12/2009'