Mysql:将日期添加到日期

时间:2014-02-18 14:10:28

标签: mysql date

我有一张包含此数据的表格(mytable):

CORTE_DATE ;   FECHA_INICIO
2013-03-31 ; 2012-12-31 00:00:00.0
2013-06-30 ; 2013-03-31 00:00:00.0
2013-09-30 ; 2013-06-30 00:00:00.0
2013-12-31 ; 2013-09-30 00:00:00.0

我想在FECHA_INICIO字段中添加一(1)天,我尝试了几种方法:

update mytable set FECHA_INICIO = ADDDATE(FECHA_INICIO, 1);
update mytable set FECHA_INICIO = DATE_ADD(FECHA_INICIO, INTERVAL 1 DAY);
update mytable set FECHA_INICIO = FECHA_INICIO + INTERVAL 1 DAY;

并且所有这些都使用NULL更新FECHA_INICIO。如果我选择如下所示的行:

select adddate(FECHA_INICIO, interval 1 day) FECHA, FECHA_INICIO from mytable

我得到以下

    FECHA   FECHA_INICIO
(null)  2012-12-31 00:00:00.0
(null)  2013-03-31 00:00:00.0
(null)  2013-06-30 00:00:00.0
(null)  2013-09-30 00:00:00.0

我在linux下使用mysql 5.1.69

我做错了什么?这可能是一个mysql设置问题吗?


现在我发现了为什么...使用mysql控制台,我选择了mytable,看看我得到了什么:

+------------+--------------+
| FECHA      | FECHA_INICIO |
+------------+--------------+
| 2013-03-31 | 2013-01-00   |
| 2013-06-30 | 2013-04-00   |
| 2013-09-30 | 2013-07-00   |
| 2013-12-31 | 2013-10-00   |
+------------+--------------+

所以问题出在它存储在列的日期。我正在使用DbVisualizer进行选择,并且驱动程序返回了不同的日期。

4 个答案:

答案 0 :(得分:0)

如果我运行以下查询:

SELECT DATE_ADD( "2012-12-31 00:00:00.0", INTERVAL 1
DAY ) 

它给了我正确的输出:

2013-01-01 00:00:00

Sql Fiddle:http://sqlfiddle.com/#!2/a2581/20935

答案 1 :(得分:0)

试试这个

UPDATE mytable set 
FECHA_INICIO = 
DATE_ADD('2013-03-31 00:00:00' , INTERVAL 1 DAY);

答案 2 :(得分:0)

如果我按照您在评论中发布的创建表架构,那么一切正常。一定有别的错误。

在这里看到这个小提琴。您可以看到updateselect按预期工作。

http://sqlfiddle.com/#!2/dedcf/2

答案 3 :(得分:0)

现在我发现了为什么...使用mysql控制台,我选择了mytable,看看我得到了什么:

+------------+--------------+
| FECHA      | FECHA_INICIO |
+------------+--------------+
| 2013-03-31 | 2013-01-00   |
| 2013-06-30 | 2013-04-00   |
| 2013-09-30 | 2013-07-00   |
| 2013-12-31 | 2013-10-00   |
+------------+--------------+

所以问题出在它存储在列的日期。我正在使用DbVisualizer进行选择,并且驱动程序返回了不同的日期。

谢谢你的时间。