2014-01-19 53 views
1

在我的情況下,我需要處理無效的日期值,如:'04070 $'。即使我收到錯誤的輸入,例如:'04070 $',我也需要插入一些內容。截取不正確的日期值

當我這樣做:

select str_to_date('04070$','%m%d%Y') from dual; 

結果是:

2000-04-07 

但對於插入語句,我得到一個錯誤:

INSERT INTO `table1` (`Date_Posted`) VALUES (str_to_date('04070$','%m%d%Y')) 

#1292 - Truncated incorrect date value: '04070$' 

我不明白爲什麼select語句運行正常並且插入語句會給出錯誤。有沒有辦法讓插入語句插入NULL或日期(即使它是不正確的)當呈現這樣的不正確的值?

回答

0

Select語句以及Insert語句會發出錯誤,因爲$ wont被視爲一個數字。它必須是

INSERT INTO `table1` (`Date_Posted`) VALUES (str_to_date('040709','%m%d%Y')). 

用於插入表1與入門2009-04-07

+0

不,select語句沒有給出任何錯誤。 – coolscitist

+0

是的,它確實給了一個MySQL 1292錯誤:被截斷的不正確的日期值:'04070 $' –

+0

它可能會在你的系統中給出。它不會在我的。必須是一些配置相關的問題。 – coolscitist

0

更換

INSERT INTO `table1` (`Date_Posted`) VALUES (str_to_date('04070$','%m%d%Y')) 

通過

INSERT INTO table1(Date_Posted) VALUES (str_to_date('04070','%m%d%Y')) 
0

雖然你的問題是有效的。但請記住,這是一個警告,不是錯誤。

行也插入在這種情況下。我用一個例子來檢查它,它工作正常。

由於MySQL在匹配適當的數據類型後總是截斷列值,並截斷不匹配的數據或從完整字符串中截斷範圍值。

示例:如果要在char(3)中插入'ABCDEFGHIHJHJ',它會截斷字符串並在該行中插入ABC。

相關問題