在 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 |
+--------------------------------------------------------------+
我知道这会产生语法错误。
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 |
+--------------------------------------------------------------+