用于在两个日期和时间之间选择数据的SQL查询

时间:2015-12-07 20:50:45

标签: sql sql-server

我的表中有一个[time]字段,它是一个DateTime变量,格式就像2014-04-08 23:55:00.000一样。我想选择两个特定日期和时间之间的所有记录。

像这样:

SELECT * FROM  [table] 
WHERE time >=2014-04-08 23:53:00.000 AND time <= 2014-04-08 23:58:00.000

我写了一个SQL

SELECT * FROM [table]
WHERE time BETWEEN #4/19/2014 12:00:00 AM# and #4/19/2014 12:30:00 AM#

但这不起作用。错误代码是:

  

'12'附近的语法不正确。

     

描述:执行期间发生了未处理的异常   当前的网络请求。请查看堆栈跟踪了解更多信息   有关错误的信息以及它在代码中的起源。

2 个答案:

答案 0 :(得分:2)

您需要围绕值的单引号:

SELECT * FROM  [table] 
WHERE [time] >='2014-04-08 23:53:00.000' AND [time] <= '2014-04-08 23:58:00.000'

当我在这里时,你错误地认为数据是如何格式化的。 yyy-MM-dd HH:mm:ss.fff格式只是视觉工作室,管理工作室或您的查询工具为您显示的便利。 Datetime列实际上以不可读的二进制格式存储。

答案 1 :(得分:1)

您需要将日期时间值放在引号中。我个人也放弃了毫秒组件,因为这在过去引起了我的问题。您最安全的做法是在time列名称周围添加括号,以便不会将其视为受限制的术语。

SELECT * FROM  [table] 
WHERE [time] >='2014-04-08 23:53:00' AND [time] <= '2014-04-08 23:58:00'

由于您指定的是>=<=,因此您还可以使用BETWEEN运算符来简化语句。

SELECT * FROM  [table] 
WHERE [time] BETWEEN '2014-04-08 23:53:00' AND '2014-04-08 23:58:00'