我有一张表,其中我的字符串日期格式为01.04.2015
。现在我想为该字符串日期格式列添加一些天。为此,我在下面的查询中添加了几天。
SELECT DATE_ADD(level2,INTERVAL 28 DAY) level2 FROM sales_purchase_stocks_hs WHERE stock= '123'
当我运行此查询时,我的日期输出错误。输出为2001-05-18 15:00:00
。但我原来的日期字符串是01.04.2015
(2015年4月1日)。
我尝试使用以下查询
SELECT STR_TO_DATE(DATE_ADD(level2,INTERVAL 28 DAY),'%d.%m.%Y') level2 FROM sales_purchase_stocks_hs WHERE stock = '123'.
但是当我运行查询时,我得到null
作为结果。任何人都可以在我做错的地方帮助我吗?
答案 0 :(得分:4)
你做错了。您需要先使用str_to_date
将字符串日期转换为实际日期,然后在其上应用date_add()
。
此处str_to_date
如何运作
mysql> select str_to_date('01.04.2015','%d.%m.%Y') as date;
+------------+
| date |
+------------+
| 2015-04-01 |
+------------+
1 row in set (0.00 sec)
现在在date_add()
内使用以上内容,以便
mysql> select date_add(str_to_date('01.04.2015','%d.%m.%Y'),interval 28 day) as date;
+------------+
| date |
+------------+
| 2015-04-29 |
+------------+
1 row in set (0.00 sec)
您现在可以在查询中使用上述内容。
答案 1 :(得分:0)
SELECT DATE_ADD(`your_field_name`, INTERVAL 28 DAY)....
例如我在这里添加了10天,
mysql> select date_start from date_of_join where id = 23 ;
+------------+
| date_start |
+------------+
| 2012-02-03 |
+------------+
1 row in set (0.00 sec)
mysql> SELECT DATE_ADD(`date_start`, INTERVAL 10 DAY) from date_of_join where id = 23 ;
+-----------------------------------------+
| DATE_ADD(`date_start`, INTERVAL 10 DAY) |
+-----------------------------------------+
| 2012-02-13 |
+-----------------------------------------+
1 row in set (0.00 sec)