【问题标题】:MySQL WHERE date smaller than Y-mMySQL WHERE 日期小于 Y-m
【发布时间】:2014-02-28 00:08:34
【问题描述】:

我表中的每一行都有一个日期 Y-m-d。现在我只想选择那些日期在某个月份和年份之前的行。因此,例如,我想要日期为 2014 年 1 月之前的所有行。

我将如何在 MySQL 中执行此操作?只考虑月份是行不通的,因为它也会给我一个月更小的行,但在我一年之后。例如。我想要日期小于 03/2013 的行。它也会给我 02/2014。

当然,我可以在 php 中首先定义该月的第一天,然后比较完整日期。但这似乎不太好,当我想比较某个月之后的日期时,我必须知道一个月有多少天。

【问题讨论】:

  • But this does no seem too great and when I want to compare dates after a certain month I have to know how many days a month has看这个,uk3.php.net/cal_days_in_month可能对你有帮助。也许您可以使用时间戳来比较日期,请查看此查询 stackoverflow.com/questions/11133760/…
  • 为什么不将过滤器设置为第一天并使用小于运算符?至于之后,只需取下个月的第一天,并使用大于等于运算符即可。

标签: php mysql


【解决方案1】:

您可以使用STR_TO_DATE 函数转换为实际的DATE 类型,然后与截止日期进行简单比较。

 SELECT *
   FROM Your_Table
  WHERE STR_TO_DATE(Your_Date_Column,'%Y-%m-%d') < STR_TO_DATE('2013-03-01','%Y-%m-%d');

【讨论】:

    猜你喜欢
    • 2014-04-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-05-25
    • 2014-03-12
    • 2011-03-29
    • 1970-01-01
    相关资源
    最近更新 更多