shu*_*ham 1 mysql sql datetime filtering date
我的数据库中有两列,一列用于“YYYY-MM-DD”格式的日期(接收日期),一列用于“小时:分钟:秒”格式的时间(接收时间)
我想查询receive_date从“2022-02-10”开始并且receive_time大于“15:00:00”直到receive_date“2022-02-17”并且receive_time小于“17:00:00”的数据。
请记住,receive_time对于日期“2022-02-10”大于“15:00:00”,但对于下一个日期“2022-02-18”,receive_time直到结束日期为止都不重要,对于end_date“2022-02”也是如此-17' 我想要直到'17:00:00'为止的数据receive_time。
您可以使用 a 连接两个字符串CONCAT(),然后检查结果是否在您的日期/时间范围内。像这样:
SELECT * FROM aeron.Device_200011555585431
WHERE CONCAT(Receive_Date, ' ', Receive_Time)
BETWEEN '2022-02-10 15:00:00' AND '2022-02-17 17:00:00';
Run Code Online (Sandbox Code Playgroud)
请记住,CONCAT()如果您正在查询的表有数百万条记录,那么作为比较术语,这可能有点昂贵。
使用的替代方法CONCAT()可能是检查每个组合,Receive_Date并且Receive_Time您需要覆盖所需的时间跨度。
就像是:
SELECT * FROM aeron.Device_200011555585431
WHERE ( Receive_Date = '2022-02-10' AND Receive_Time > '15:00:00' )
OR ( Receive_Date > '2022-02-10' AND Receive_Date < '2022-02-17' )
OR ( Receive_Date = '2022-02-17' AND Receive_Time < '17:00:00' );
Run Code Online (Sandbox Code Playgroud)
应该比CONCAT()如果Receive_Date和Receive_Time被索引便宜,但在相反的情况下不确定。
另一种选择是通过将两列融合为适当的类型来重构表DATETIME。
| 归档时间: |
|
| 查看次数: |
2551 次 |
| 最近记录: |