Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/63.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 如何在str_to_date mysql函数中添加一些天?_Php_Mysql_Date - Fatal编程技术网

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