php - 如何添加前导零

标签 php mysql sql

我想知道如何在这里得到前导零。我已经尝试过 %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:0002: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'

这就是为什么你不能得到结果的原因是语句不正确。您应该首先将 eventDatetime 转换为 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)

Fiddle

关于php - 如何添加前导零,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40296292/

相关文章:

sql - Oracle SQL 按多个 OR 条件进行分组

php - 未收到 WinHttp POST 正文

php - url中的参数怎么写?

php - 将 JSON 字典值存储到变量中

mysql - 我可以使用 mvn install :install-file? 安装 mysql jdbc 连接器吗

mysql - DATEDIFF 最后记录的当前/日期

php - 执行Laravel Eloquent 'select'语句满足多个相关表中的条件

PHP MySQL 搜索查询 - 如何在搜索 "my search"时找到类似 "mysearch"的结果?

mysql - 找不到此 SQL 错误的原因

sql - 使用 JOIN 修改多列查询的结果