【问题标题】:mysql select date using timestampmysql使用时间戳选择日期
【发布时间】:2014-09-09 07:42:01
【问题描述】:

在我的数据库中,我使用了一个名为 startdate 的列,并且该列中有带有时间戳的行,如下所示:1410178260

通常,当我使用日期时间字段并且想要选择所有日期为今天的项目时,我会运行以下查询:

$sql = "SELECT id FROM agenda2 WHERE DATE(startdate) >= CURRENT_DATE()";

但是现在,使用时间戳,我不知道如何进行查询以选择今天插入的所有项目。 有人可以帮我吗?

【问题讨论】:

    标签: php mysql date timestamp


    【解决方案1】:

    您需要使用函数 from_unixtime() 转换为日期

    mysql> select FROM_UNIXTIME('1410178260');
    +-----------------------------+
    | FROM_UNIXTIME('1410178260') |
    +-----------------------------+
    | 2014-09-08 17:41:00         |
    +-----------------------------+
    

    所以你可以这样做

    SELECT id FROM agenda2 WHERE DATE(FROM_UNIXTIME(startdate)) >= CURRENT_DATE()
    

    【讨论】:

    • 一个Sargable query 将是SELECT id FROM agenda2 WHERE startdate >= UNIX_TIMESTAMP(CURRENT_DATE())
    • 是的 Sargable 查询在涉及索引时会在性能方面做得更好:)
    【解决方案2】:

    如果您使用的是 unix 时间戳,那么您必须使用

    $sql = "SELECT id FROM agenda2 WHERE DATE(FROM_UNIXTIME(startdate)) >= CURRENT_DATE()";
    

    考虑到这两个版本都不能使用索引。

    FROM_UNIXTIME

    【讨论】:

      猜你喜欢
      • 2011-04-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-04-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多