2013-04-05 148 views
2

日期操作MySQL的更新我有一個MySQL表:與其他領域

fields: 

tag 
duedate 

在「標籤」字段我有一個字符串conatining日期(「MYWHATEVER_20130401」)。

所有具有「標籤」如「MYWHATEVER_%」的行,我需要使用「標籤」中的「20130401」更新「duedate」並添加14天並以格式「2013-04-15」存儲。

任何方式來做一個查詢?

+0

是固定日期的長度,位於列'tag'字符串的最後? – 2013-04-05 16:20:26

+0

是的,都有完全相同的格式。 (MYWHATEVER_YYYYMMDD) – 2013-04-05 16:22:20

+0

'duedate'列的數據類型是什麼? – 2013-04-05 16:22:38

回答

2

您可以使用RIGHT()函數根據指定的長度修剪字符串中的字符。在從字符串中添加14 days之前,您需要先使用STR_TO_DATE()將其先轉換爲日期,例如。

UPDATE tableName 
SET  duedate = STR_TO_DATE(RIGHT(tag, 8),'%Y%m%d') + INTERVAL 14 DAY 
WHERE tag LIKE 'MYWHATEVER\_%' 
+0

,然後只需添加一個「WHERE標籤,如'MYWHATEVER_%」? – 2013-04-05 16:24:56

+0

@MichaelGrenzer究竟是':)' – 2013-04-05 16:26:00

+0

非常感謝...你救了我的一天:D – 2013-04-05 16:28:39

0

可以使用STR_TO_DATE功能:

UPDATE yourtable 
SET 
    duedate = STR_TO_DATE(tag, 'MYWHATEVER_%Y%m%d') + INTERVAL 14 DAY 
WHERE 
    tag LIKE 'MYWHATEVER\_%' 

我在LIKE子句逃脫_,因爲它是一個快活的性格。