0

我有一个名为“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

现在我想要 ao/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'

但我没有得到我想要的结果。

请帮帮我。。

4

4 回答 4

2

如果您正在寻找当前日期,为什么不使用GETDATE

将当前数据库系统时间戳作为日期时间值返回,不带数据库时区偏移量。此值源自运行 SQL Server 实例的计算机的操作系统。

就像是

select  * 
from    Table1 
where   GETDATE() BETWEEN startdatetime  AND enddatetime

SQL 小提琴演示

于 2013-07-17T04:12:51.130 回答
2

我想你会想做:

select vehicleno ,startdatetime, enddatetime
from table1
where getUTCDate() between startdatetime and enddatetime

然后,如果您不在 GMT 中,dateAdd(hour, 5, getUTCDate())如果您说 EST,则可以执行。

在 select 语句中指定要使用的列总是更正确的。

在这一点上,由于我们生活在一个全球社区中,我觉得使用它getUTCDate()而不是仅仅使用常规更合适,getDate()因为getDate()它只是服务器所在的时区,如果这适用于您的情况,它将取决于服务器所在的位置。

可以看到GetUTCDate()的定义

于 2013-07-17T04:18:05.497 回答
1

尝试以下操作:

select * 
from Table1 
where GetDate() between startdatetime and enddatetime

GetDate() 获取当前日期时间

于 2013-07-17T04:13:05.927 回答
0

仅作记录,如果您想在 SQL 中使用文字日期,请使用 ISO 日期格式 (YYYY-MM-DD hh:mm:ss)。无论您的语言环境设置如何,这是保证正确解释的唯一格式。

于 2013-07-17T04:27:24.300 回答