这是我使用'between'运算符来获取日期的简单查询。
create table dummy (mydate datetime);
insert into dummy values('2013-03-20 10:30:00.000');
insert into dummy values('2013-03-21 10:30:00.000');
insert into dummy values('2013-03-22 10:30:00.000');
insert into dummy values('2013-03-23 10:30:00.000');
insert into dummy values('2013-03-24 10:30:00.000');
insert into dummy values('2013-03-25 10:30:00.000');
insert into dummy values('2013-03-26 10:30:00.000');
insert into dummy values('2013-03-27 10:30:00.000');
insert into dummy values('2013-03-28 10:30:00.000');
insert into dummy values('2013-03-29 10:30:00.000');
insert into dummy values('2013-03-30 10:30:00.000');
我使用的qiuery是:
select * from dummy where mydate between ('3/01/2013 12:00:00 AM') and ('3/30/2013 12:00:00 AM')
此处2013-03-30 10:30:00.000
也应该返回。
答案 0 :(得分:14)
更改where子句中的日期时间格式,然后使用>=
和<
检查值。
select *
from dummy
where mydate >= '20130301' and
mydate < '20130401'
答案 1 :(得分:3)
查询:
<强> SQLFIDDLEExample 强>
select *
from dummy
where mydate between ('3/01/2013 12:00:00')
and ('3/30/2013 12:00:00')
结果:
| MYDATE |
--------------------------------
| March, 20 2013 10:30:00+0000 |
| March, 21 2013 10:30:00+0000 |
| March, 22 2013 10:30:00+0000 |
| March, 23 2013 10:30:00+0000 |
| March, 24 2013 10:30:00+0000 |
| March, 25 2013 10:30:00+0000 |
| March, 26 2013 10:30:00+0000 |
| March, 27 2013 10:30:00+0000 |
| March, 28 2013 10:30:00+0000 |
| March, 29 2013 10:30:00+0000 |
| March, 30 2013 10:30:00+0000 |
答案 2 :(得分:2)
我认为(我的文化没有AM/PM
指示符)12 AM
表示午夜(因此从29日到30日)。因此,请使用12 PM
或省略AM/PM
指示符。
mydate between ('3/01/2013 12:00:00 AM')
and ('3/30/2013 12:00:00 PM')
你也可以删除时间部分并添加一天,这意味着午夜:
mydate between '2013-03-01' and '2013-03-31'
答案 3 :(得分:0)
请记住,日期时间数据使用24小时制(00:00:00至23:59:59)。 错误是在“3/30/2013 12:00:00 AM”条件下的“AM”指定,因为12:00:00 AM等于00:00:00,而10:30:00是“大于“上午12:00:00,这就是为什么值'2013-03-30 10:30:00.000'它不在选定的值中。
使用 选择 * 来自假人 在哪里mydate之间 ('3/01/2013 12:00:00') 和 ('3/30/2013 12:00:00')