Php 如何在str_to_date mysql函数中添加一些天?
我有一个表,其中有一个字符串日期,格式为Php 如何在str_to_date mysql函数中添加一些天?,php,mysql,date,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日) 我尝试了
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
。谁能帮我一下我哪里做错了吗?你做错了。您需要首先使用str\u to\u date
将字符串日期转换为实际日期,然后对其应用date\u add()
以下是str\u to\u 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\u 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)
现在,您可以在查询中使用上述内容
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)
一个糟糕的设计很难帮上忙。始终以规范形式存储日期。以用户想要的格式输出它们(每种语言都有日期格式化功能)。这是优秀编程的一个真理。(请原谅夸夸其谈)这是个问题吗?还是答案?如果答案是肯定的,请解释他们为什么要这样做。我想解释的是,即使没有str-to-DATE,添加的日期也能完美地工作。如果字段类型为日期,请参见下面我的答案中的示例。”yyyy-mm-dd’嗨,你能看看这个吗?how-to-tell-mysql-to-skip-a-column-if-it-is-empty-or-null-with-out-processing