php - 替代 MySQL 中的 strtotime()

标签 php mysql datetime

我有一个包含这些字段的 EventSet 表:

  • start_day(例如星期一)
  • 开始时间(例如 14:20:00)

我想创建一个查询,通过比较特定记录的日期和当前时间来选择特定记录。

因此,借助 PHP 的 strtotime(); 方法的一点帮助,我的目标类似于:

SELECT * 
FROM 
   `EventSet` 
WHERE 
    DATE_FORMAT(NOW(), '%W %H:%i:%s') <= 
    date('%W %H:%i:%s', strtotime('start_day start_time'))

最后的 date(); 部分当然是纯 PHP


到目前为止,我已经尝试将 DATE_FORMATCONCAT_WS 以及 TIMESTAMP();/UNIX_TIMESTAMP(); 一起使用,但是我显然把事情搞砸了。

SELECT * 
FROM 
    `EventSet` 
WHERE 
    DATE_FORMAT(NOW(), '%W %H:%i:%s') <= 
    DATE_FORMAT(CONCAT_WS(' ', start_day, start_time), '%W %H:%i:%s')

我在这里和网上浏览了许多类似的问题,但它们都已经有一个日期字段可以使用,并且不需要连接任何东西,所以我不能使用它们中的任何一个。

最佳答案

您正在使用 <= .这不适用于星期几的名称,因此将逻辑分为两部分:一个用于星期几,另一个用于时间:

SELECT e.* 
FROM `EventSet` e
WHERE DATE_FORMAT(NOW(), '%W') = $start_day AND
      DATE_FORMAT(NOW(), '%H:%i:%s') <= DATE_FORMAT($start_time, '%H:%i:%s')

注意:我离开了date_format()对于时间比较,我更喜欢:

SELECT e.* 
FROM `EventSet` e
WHERE DATE_FORMAT(NOW(), '%W') = $start_day AND
      TIME(NOW())) <= TIME($start_time)

关于php - 替代 MySQL 中的 strtotime(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31808831/

相关文章:

php - if else if 条件不能正常工作

mysql - 从今天早上 5 点开始获取所有 `Timestamp`

php - 如何连续比较当前时间与数据库中的日期时间字段?

excel - 倒计时到 VBA 中的特定日期和时间

MySQL:按连续天数分组并计数

javascript - 使用 php Ajax 在数据库中插入动态数据

javascript - 如何删除多选中的空值

Centos 上的 PHP 无法执行 ("ping google.com");但可以执行 ("whoami");

php - 通过 php 中的函数使用 sql 访问数据库的最智能方法

mysql - 如何插入多边形并检查传递的多边形是否在mysql数据库中?