如何在str_to_date mysql函数中添加一些天?

时间:2015-03-09 16:39:14

标签: php mysql date

我有一张表,其中我的字符串日期格式为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作为结果。任何人都可以在我做错的地方帮助我吗?

2 个答案:

答案 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)