我想知道如何在这里得到前导零。我已经尝试过 %H
和 %h
但仍然无法正常工作。任何帮助将不胜感激。谢谢
SELECT * FROM events WHERE eventDate = DATE_FORMAT(CURDATE(), '%d-%m-%Y') AND time BETWEEN DATE_FORMAT(DATE_SUB(NOW(), INTERVAL 2 HOUR),'%H:%i') AND DATE_FORMAT(DATE_ADD(NOW(), INTERVAL 10 MINUTE),'%H:%i')
更新: 它只是在 00:00 到 02:00 之间不起作用。有人知道为什么会发生这种情况吗?
最佳答案
正如您所说,您的问题仅在 00:00
和 02:00
之间存在,它是由以下代码引起的:
DATE_FORMAT(DATE_SUB(NOW(), INTERVAL 2 HOUR),'%H:%i')
让我们将代码分成几个部分:
select date_format(curdate(), '%d-%m-%Y') as date_only,
DATE_FORMAT(DATE_SUB(now(), INTERVAL 2 HOUR),'%H:%i') as min2h,
DATE_FORMAT(DATE_ADD(now(), INTERVAL 10 MINUTE),'%H:%i') as add10m
# assume now = 2016/10/28 01:00
# the date_only will return 2016/10/28
# the min2h will return 23:00
# the add10m will return 01:10
回到您的查询,您将得到如下查询:
SELECT * FROM events WHERE eventDate = '20161028' AND time BETWEEN '23:00' AND '01:10'
这就是为什么你不能得到结果的原因是语句不正确。您应该首先将 eventDate
和 time
转换为 datetime
,以便您可以在时正确比较datetime
>减去 2 小时是昨天或加上 10 分钟是明天
select * from events
where str_to_date(concat(`eventDate`, " ", `time`), '%d-%m-%Y %H:%i') # convert o datetime, depends on your format
between date_sub(@report_date, interval 2 hour)
and date_add(@report_date, interval 10 minute)
关于php - 如何添加前导零,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40296292/