MySQL 日期格式将小时-分钟转换为间隔并忽略年-月-日

标签 mysql date date-format

(抱歉,我最初以为这是 MySQL,把我的数据库搞混了,同时在太多 DBMS 中工作)

我需要比较事件的开始时间和结束时间之间的中点。现在,我正在将您在右侧看到的日期转换为 HH:MM,并且比较将持续到午夜。

查询显示:WHERE half BETWEEN pStart 和 pStop。

如下所示,pStart 和 pStap 的日期为 2000 年 1 月 1 日,这是因为年月日对我来说并不重要...

有效数据:

 +-------+--------+-------+---------------------+---------------------+---------------------+
 | half  | pStart | pStop | half2               | pStart2             | pStop2              |
 +-------+--------+-------+---------------------+---------------------+---------------------+ 
 | 19:00 | 19:00  | 23:00 | 2012-11-04 19:00:00 | 2000-01-01 19:00:00 | 2000-01-01 23:00:00 |
 | 20:00 | 19:00  | 23:00 | 2012-11-04 20:00:00 | 2000-01-01 19:00:00 | 2000-01-01 23:00:00 |
 | 21:00 | 19:00  | 23:00 | 2012-11-04 21:00:00 | 2000-01-01 19:00:00 | 2000-01-01 23:00:00 |
 | 23:00 | 20:00  | 23:00 | 2012-11-05 23:00:00 | 2000-01-01 20:00:00 | 2000-01-01 23:00:00 |
 +-------+--------+-------+---------------------+---------------------+---------------------+

现在观察当 pStop 是午夜或更晚时会发生什么......

破坏它的有效数据:

+-------+--------+-------+---------------------+---------------------+---------------------+
| half  | pStart | pStop | half2               | pStart2             | pStop2              |
+-------+--------+-------+---------------------+---------------------+---------------------+ 
| 23:00 | 22:00  | 00:00 | 2012-11-04 23:00:00 | 2000-01-01 22:00:00 | 2000-01-01 00:00:00 |
| 23:30 | 23:00  | 02:00 | 2012-11-05 23:30:00 | 2000-01-01 23:00:00 | 2000-01-01 02:00:00 |
+-------+--------+-------+---------------------+---------------------+---------------------+

因此我的 where 子句翻译为: WHERE 19:00 BETWEEN 22:00 AND 00:00 ...返回 false,我错过了上面的两行正确的行。

问题:

有没有办法将这些日期显示为整数间隔,以便 pStart 和 pStop 之间的一半是正确的?

我考虑过在 pStop 小于 pStart 时添加 24,以使 00:00 变成 24:00,但不知道在没有长字符串连接和数字转换的情况下实现这一点的简单方法。这将解决问题,因为 pStart pStop 差异永远不会超过 6 小时。

注意:(查询要复杂得多。它还有其他不相关的日期计算,但结果如上所示。DATE_FORMAT(%H:%i) 应用于前三列,后三列没有格式化)

感谢您的帮助:

最佳答案

那么这一天对你来说很重要吗?

考虑到你在一天内把所有事情都搞砸了,事情一定会是这样的

WHere ((Start <= Stop) and ??)
Or
((Start > Stop) and ???)

关于MySQL 日期格式将小时-分钟转换为间隔并忽略年-月-日,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13130852/

相关文章:

php - 在 PHP 中获取 mySQL 行的值并回显某些行的多个值

mysql - 库未加载 :/usr/local/mysql/lib/libmysqlclient. 18.dylib (LoadError)

mysql - 如何高效地记录日期时间以供分析?

php - 通过php上传csv文件到MySQL数据库

mysql - Gradle 加载 mysql-connector jar 但没有 dbunit jar 作为外部依赖项,为什么?

java - JAVA程序根据出生日期和当前日期计算人的年龄

android - 我如何在没有星期六和星期日的情况下获取一周中所有日期的名称以及一周中的所有日期?

r - 自 1960 年 1 月 1 日起将日期时间字符串转换为毫秒的 double 值

java - 安卓 : Get day of the week from date?

mysql - 使用 str_to_date 转换日期格式