我的表中有一个[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'附近的语法不正确。
描述:执行期间发生了未处理的异常 当前的网络请求。请查看堆栈跟踪了解更多信息 有关错误的信息以及它在代码中的起源。
答案 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'