我有一张包含此数据的表格(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进行选择,并且驱动程序返回了不同的日期。
答案 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)
如果我按照您在评论中发布的创建表架构,那么一切正常。一定有别的错误。
在这里看到这个小提琴。您可以看到update
和select
按预期工作。
答案 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进行选择,并且驱动程序返回了不同的日期。
谢谢你的时间。