在 MySql 中查找特定日期

finding a specific date in MySql

我知道这会产生语法错误。 SELECT DATE_SUB(DATE_SUB(now(),INTERVAL 3 MONTH)),INTERVAL EXTRACT(DAY FROM (DATE_SUB(now(),INTERVAL 3 MONTH))) DAY) as oldDate

我是 SQL 的新手,在这里我试图找到 3 个月前的日期和该月的第一天。 例如,从今天算起的 3 个月前的日期是 28-11-2014,所以我必须显示 01-11-2014。 那么如何对上面的代码进行排序以避免语法错误。

您可以使用DATE_FORMAT根据您的要求格式化日期。

  SELECT DATE_SUB(NOW(), INTERVAL 3 MONTH) 3months_ago,
         DATE_FORMAT(DATE_SUB(NOW(), INTERVAL 3 MONTH), "01-%m-%Y") first_day
    FROM DUAL

   +---------------------+------------+
   | 3months_ago         | first_day  |
   +---------------------+------------+
   | 2014-11-28 09:20:50 | 01-11-2014 |
   +---------------------+------------+

您可以将 date_format() 函数与 date_sub() 一起使用以获得每月的第一天

mysql> select date_format(date_sub(curdate(),interval 3 month),'01-%m-%Y') ;
+--------------------------------------------------------------+
| date_format(date_sub(curdate(),interval 3 month),'01-%m-%Y') |
+--------------------------------------------------------------+
| 01-11-2014                                                  |
+--------------------------------------------------------------+