【问题标题】:SQL DATETIME querySQL 日期时间查询
【发布时间】:2011-06-17 07:09:09
【问题描述】:

您好,我试图通过查询比较 MySQL 中的两个日期,一个是第一次发布文章的日期,第二个日期是应该被查询删除的日期(365 天后,由 cron 任务运行每 30 分钟一次。),下面是我的 SQL 查询

DELETE FROM $wpdb->posts WHERE post_type = 'business' AND DATEDIFF(NOW(), post_date_gmt) > 2 

我的日期以这种格式2011-05-26 13:10:56 保存在数据库中,所以我的问题是 DATETIME 查询是否会遵守确切的日期和时间,或者当 cron 在第 365 天运行时删除文章甚至在实际 365 天之前是否还有 13:10:56

问候

【问题讨论】:

    标签: mysql datetime format


    【解决方案1】:

    您的查询将删除所有超过 2 天的帖子,而不是 365 天。

    但是你的问题的答案很容易测试:

    mysql> SELECT DATEDIFF('2011-01-01 00:10:00','2011-01-01 00:00:00');
    +-------------------------------------------------------+
    | DATEDIFF('2011-01-01 00:10:00','2011-01-01 00:00:00') |
    +-------------------------------------------------------+
    |                                                     0 | 
    +-------------------------------------------------------+
    1 row in set (0.00 sec)
    

    如您所见,DATEDIFF() 仅返回整数天。以 '2011-01-01 23:59:59' 作为第一个日期的类似测试也将产生 0。

    因此,您的问题的简短回答是“是的,它尊重日期和时间,精确到秒。”

    【讨论】:

    • Ahhh flimzy 我看到你对细节有敏锐的眼光(这是我运行的试驾中的 c&p)最终结果将是 365 天,所以我感谢你花时间回答我的问题问题并将其标记为已回答。最好的问候马丁
    • 另外请注意,通过说 > 365,您实际上是在删除 早于 的帖子,而不是 365 天——换句话说,“366 天或更早”。如果您想在发布后 365 天删除内容,您可能想说 >= 365。虽然我怀疑如果你的帖子在被砍前一天还存在,这无关紧要:)
    • 实际上这很重要,因为我在文章页面上通过 MySql 的 php 进行了回声调用,显示帖子何时到期(仅对文章所有者可见),感谢您的提示。感激不尽
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-07-09
    • 1970-01-01
    • 2019-04-27
    • 2011-09-02
    相关资源
    最近更新 更多