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

时间:2012-10-29 22:56:22

标签: mysql date date-format

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

我需要比较事件在一天的开始和停止时间之间的中间点。现在我正在将您在右侧看到的日期转换为HH:MM并且比较工作直到午夜。

查询说:在pStart和pStop之间有一半BETWEEN。

如下所示,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子句转换为: 在22:00和00:00之间的19:00 ......返回false并且我错过了上面的两个正确的行。

问题:

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

我考虑在pStop小于pStart时添加24以使00:00变为24:00但是如果没有长字符串连接和数字转换,就不知道这么做的简单方法。这样可以解决问题,因为pStart pStop差异永远不会超过6小时。

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

感谢您的帮助:

1 个答案:

答案 0 :(得分:1)

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

鉴于你在一天内做了所有事情搞砸了它,它必须像

一样
WHere ((Start <= Stop) and ??)
Or
((Start > Stop) and ???)
相关问题