2014-02-18 44 views
0

我有這個數據表(mytable的):MySQL的:添加天的日期

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 

我想加一(1)天FECHA_INICIO領域,我已經嘗試了幾種方法:

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 

我得到我使用的linux下的

什麼我做錯了MySQL的69年1月5日以下

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 

?它可能是一個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'告訴我它不是有效的日期格式,並且該列可能存儲爲字符串。在對其進行日期數學計算之前,在該列上使用'STR_TO_DATE'。 –

+0

FECHA_INICIO列的數據類型是什麼? – Rahul

+0

可能是FECHA_INICIO的數據類型是varchar或char。 –

回答

0

如果我去由喲你創建表格架構,由你發表評論,然後一切工作正常。一定還有其他的錯誤。

在這裏看到這個小提琴。正如你可以看到updateselect按預期工作。

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

+0

我發現如果我使用另一列(fecha)它工作正常。 ..有點奇怪。 –

0

如果我運行下面的查詢:

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

它給我正確的輸出:

2013-01-01 00:00:00 

的Sql小提琴:http://sqlfiddle.com/#!2/a2581/20935

0

試試這個

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

這是工作的,但我將不得不逐行進行。這似乎是一個MySQL設置問題,因爲我已經在其他數據庫嘗試過了,並且它工作正常。 –

+0

而不是給出一個硬代碼日期採取** FECHA_INICIO **像這樣'更新mytable集 FECHA_INICIO = ADDDATE(FECHA_INICIO,INTERVAL 1天);' –

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進行選擇,並且驅動程序返回了不同的日期。

感謝您的時間。