use*_*558 4 mysql date between intervals
我试图在日期格式中选择时间戳表中的所有记录2011-08-01-
12:00:00
使用以下代码:
SELECT f.`fly_reg`, RIGHT(f.`start_tid`,8) AS st, f.`start_hight`
FROM vbsk_dk_02.fab_master_flyvedata f
Where st between 12:00:00 AND 18:00:00
Run Code Online (Sandbox Code Playgroud)
但无法让它发挥作用
你有两个问题:
TIME()函数可以提取数据时间的时间部分解决这两个问题后,您将得到:
select
f.fly_reg,
TIME(f.start_tid) AS st,
f.start_hight
FROM vbsk_dk_02.fab_master_flyvedata f
where TIME(f.start_tid) between '12:00:00' AND '18:00:00'
Run Code Online (Sandbox Code Playgroud)
作为一个选项,如果你实际上不需要select中的时间值,你可以删除它,并将它放在where子句中.此外,HOUR()如果更适合,您可以使用该功能.通过这两项更改,您的查询将简化为:
select *
FROM vbsk_dk_02.fab_master_flyvedata
where HOUR(f.start_tid) between 12 and 18
Run Code Online (Sandbox Code Playgroud)
这是一个很整洁的:)
小智 4
如果您已将时间存储在“时间戳”或“日期时间”类型的列中,则可以选择小时之间的记录范围,如下所示:
select * from testTable where hour(`timeStampCol`) >= 12 and hour(`timeStampCol`) <= 18
Run Code Online (Sandbox Code Playgroud)
我用这个设置测试了这个:
CREATE TABLE `cm`.`testTable` (
`timeStampCol` TIMESTAMP NOT NULL,
`dateTimeCol` DATETIME NOT NULL
)
ENGINE = MyISAM
COMMENT = 'Delete this table';
insert into testTable values ('2010-01-01 14:52:00', '2010-01-01 14:52:00')
insert into testTable values ('2010-01-01 19:48:00', '2010-01-01 19:48:00')
Run Code Online (Sandbox Code Playgroud)