我有一个名为'Table1'的表。 它有3列即
1. vehicle Number
2. startdatetime
3. enddatetime
表格如下 - >
vehicleno | startdatetime | enddatetime |
1 2013/07/16 00:00:00 2013/07/17 00:00:00
2 2013/07/16 00:00:00 2013/07/18 14:00:00
3 2013/07/17 12:19:00 2013/07/20 17:35:00
4 2013/07/19 10:24:56 2013/07/19 20:14:00
5 2013/07/15 08:10:00 2013/07/18 09:10:00
现在我想要一个o / p,以便在执行查询时,如果当前日期时间在startdatetime和enddatetime之间,那么记录应该显示在我的o / p表中。
我尝试过查询..
select * from Table1 where startdatetime between '2013/07/17 00:00:00' and '2013/07/17 23:59:59' or enddatetime between '2013/07/17 00:00:00' and '2013/07/17 23:59:59'
但我没有得到我想要的结果。
请帮帮我..
答案 0 :(得分:2)
如果您要查找当前日期,为何不使用GETDATE?
将当前数据库系统时间戳记作为日期时间值返回 没有数据库时区偏移量。这个值来源于 SQL Server实例的计算机操作系统 正在运行。
像
这样的东西select *
from Table1
where GETDATE() BETWEEN startdatetime AND enddatetime
答案 1 :(得分:2)
我认为你想要这样做:
select vehicleno ,startdatetime, enddatetime
from table1
where getUTCDate() between startdatetime and enddatetime
如果您不在格林尼治标准时间,如果您说EST,则可以dateAdd(hour, 5, getUTCDate())
。
在select语句中指定要使用的列总是更正确。
此时由于我们生活在一个全球社区,我认为使用getUTCDate()
而不是常规getDate()
更合适,因为getDate()
只是服务器所在的时区如果这适用于您的情况,它将取决于服务器的位置。
您可以看到GetUTCDate()
的定义答案 2 :(得分:1)
尝试以下方法:
select *
from Table1
where GetDate() between startdatetime and enddatetime
GetDate()获取当前日期时间
答案 3 :(得分:0)
仅为记录,如果要在SQL中使用文字日期,请使用ISO日期格式(YYYY-MM-DD hh:mm:ss)。无论您的语言环境设置如何,这是唯一可以保证正确解释的格式。