mysql - 在 mysql 中减去 2 个日期时间(一个是 24 小时格式,一个是 am/pm 格式)

标签 mysql datetime

我正在尝试使用 mysql 创建查询。

select ID,NCOde,ifnull(EndTime,now())-starttime from xxx where starttime between 
'2012-05-09 00:00:00' and '2012-05-09 23:59:59' 

问题是 ifnull(EndTime,now()) 以 24 小时格式返回日期时间,而开始时间使用 am/pm 格式。

我试过使用 DATE_FORMAT(starttime, '%m-%d-%Y %T'),但操作似乎将日期时间类型更改为其他类型。

有什么建议吗?

最佳答案

使用STR_TO_DATE()将您的 starttime 字符串转换为 MySQL DATETIME:

STR_TO_DATE(starttime, '%m-%d-%Y %r')

然后使用 TIMEDIFF()减去两次:

select ID,NCOde,
  TIMEDIFF(ifnull(EndTime,now()), STR_TO_DATE(starttime, '%m-%d-%Y %r'))
from xxx
where STR_TO_DATE(starttime,'%m-%d-%Y %r')
        between '2012-05-09 00:00:00' and '2012-05-09 23:59:59'

您可能应该考虑将 starttime 列的数据类型更改为 DATETIMETIMESTAMP .另请注意,这假定 EndTime 已经是此类数据类型,否则您也必须对其执行类似的转换。

关于mysql - 在 mysql 中减去 2 个日期时间(一个是 24 小时格式,一个是 am/pm 格式),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10514685/

相关文章:

java - 如何解决异常 “com.mysql.jdbc.exceptions.jdbc4.MySQLNonTransientConnectionException: Data source rejected establishment of connection”?

javascript - 消除javascript中日期时间的时差

Python - 将原始日期时间转换为 UTC

c# - 奇怪的 .NET DateTime 问题(月份是 00??)

jquery - 调用添加表单时无法自动填充 id 字段

php - Yii 1、获取CDbCriteria生成的SQL

jquery - db查询时如何处理随机字母大小写实例?

php - 无法通过主机名、IP 浏览到开发虚拟主机

datetime - Xpath 中的循环时间

java - 使用 java.time 将日期从 "06/25/2021 10:26:33.0"格式解析为 "2021-06-25T10:26:33.000-04:00"