mysql - 获取特定时间范围的数据
问题描述
我正在尝试从 2018 年 9 月 24 日到 2018 年 9 月 26 日每天晚上 7 点到早上 7 点之间选择记录。
例子:
2018-09-24_____7 pm 至 7am____ 2018-09-25
2018-09-25_____7 pm 至 7am____ 2018-09-26
2018-09-26_____7 pm 至 7am____ 2018-09-27
通过使用此代码 A:我从晚上 7 点(2018 年 9 月 24 日)到早上 7 点(2018 年 9 月 26 日)获取记录。
If Trim(cbShift.Text) = "Morning" Then
startdt = (S_date.Text) & " 19:00:00.317"
enddt = (E_date.Text) & " 07:00:00.160" End If
SELECT FROM tb_test
WHERE (DateCreate BETWEEN convert(datetime,@startdt) AND convert(datetime,@enddt))
并通过使用此代码 B:
WHERE DateCreate > convert(datetime,'2018-09-24') AND DateCreate <=
DATEADD(day,1,convert(datetime,'2018-09-26'))
AND (DATEPART(hh,DateCreate) >= 19 and DATEPART(hh,DateCreate) <= 24 )
or DateCreate > convert(datetime,'2018-09-24') AND DateCreate <=
DATEADD(day,1,convert(datetime,'2018-09-26'))
AND (DATEPART(hh,DateCreate) >= 0 and DATEPART(hh,DateCreate) <= 6 )
我明白了
2018-09-24 (00->7 和 19 ->24) 、2018-09-25 (00->7 和 19 ->24) 和 2018-09-26 (00->7 和 19 ->24) )
有没有一种方法可以像上面的示例一样获取数据。谢谢你的帮助
解决方案
我认为问题在于您的WHERE
条款中的评估顺序。我总是OR
在 SQL 中的运算符周围使用括号。以下适用于 MySQL 5.6。
SELECT *
FROM tb_test
WHERE datecreate between '2018-09-24 19:00:00' and '2018-09-26 07:00:00'
AND (hour(DateCreate) >= 19 or hour(DateCreate) < 7);
作为参考,我使用了这个测试模式:
CREATE table tb_test
(datecreate datetime);
CREATE OR REPLACE VIEW generator_16
AS SELECT 0 n UNION ALL SELECT 1 UNION ALL SELECT 2 UNION ALL
SELECT 3 UNION ALL SELECT 4 UNION ALL SELECT 5 UNION ALL
SELECT 6 UNION ALL SELECT 7 UNION ALL SELECT 8 UNION ALL
SELECT 9 UNION ALL SELECT 10 UNION ALL SELECT 11 UNION ALL
SELECT 12 UNION ALL SELECT 13 UNION ALL SELECT 14 UNION ALL
SELECT 15;
CREATE OR REPLACE VIEW generator_256
AS SELECT ( ( hi.n << 4 ) | lo.n ) AS n
FROM generator_16 lo, generator_16 hi;
INSERT INTO tb_test
SELECT date_add("2018-09-24",interval n hour)
FROM generator_256;
推荐阅读
- mysql - 如何修复查询错误
- java - 我如何创建多个按钮并将它们分区,以便所有这些按钮都出现在屏幕上
- jquery - 无法显示从 python dajngo -view 检索到的列表对象到 ajax 自动完成
- c# - xunit测试web api核心文件上传方法
- javascript - 将 setState() 绑定到全局函数只会影响组件的一个实例
- javascript - 联系表单发送按钮抛出错误
- python - 如何在 python 中读取带有空间数据的 .rds R 文件
- python - 从 Dbf 到 numpy 数组
- ios - 在没有管理员帐户的情况下推送到 TestFlight?
- ssl - 通过 ssl 连接时,服务器在 alpine 内返回“无效的主机标头”