2016-11-21 140 views
1

我知道這個問題可能已經問,但我不能爲我的生活弄清楚什麼是錯我的時間值,MySQL的似乎不喜歡。MySql的不正確的日期時間值

在我的情況,我追加「解釋」在每一個查詢前面,看看有什麼解釋計劃的模樣。這是在實際查詢運行之前完成的。問題是MySQL不像解釋中的日期格式,但常規查詢運行良好。

這是錯誤我收到:

SQL Error: 1292, SQLState: 22007 
Incorrect datetime value: '11/19/2015 19:49:34.076' for column 'createdTime' at row 1 

查詢:

explain delete from LoggableActivity where createdTime<'11/19/2015 19:49:34.076' 

有什麼不對這種格式?它看起來不錯... 爲什麼只有附加解釋的查詢不起作用?

更多信息: 我在java中使用實體管理器來創建和執行查詢,並且生成的日期是Java'new Date(毫秒)'的結果。

感謝

+0

要求它從http://dba.stackexchange.com/ –

+0

@payamsbr感謝,我會問那裏。 – user161733

+0

如果需要,您可以使用'STR_TO_DATE()'函數。 –

回答

2

月/日/年不(重複)是世界上最好的序列

年/月/日好得多

試試這個:

explain 
select from LoggableActivity 
where createdTime<'2015-11-19 19:49:34.076' 

想想這篇文章在wikipedi a https://en.wikipedia.org/wiki/Date_format_by_country

看看世界上有多少人使用「big endian」(yyyy-mm-dd)或「little endian」(dd-mm-yyyy)日期格式。將日期字符串視爲「大端」是明智的。特別是開始逐年日期字符串減少與日期可能的混亂,其中天數小於13

+0

雖然這可能是最好的一段路要走,但似乎並沒有解決我的問題。正如我提到的,常規查詢(相同的日期時間和所有)正在通過確定。一旦我向查詢添加解釋,它就會抱怨。我的猜測是它與查詢的字符串轉換和執行有關。 – user161733

+0

我不知道MySQL或爪哇內部,但解釋前綴爲您的查詢必須通過某種類型的過濾器通過查詢,並改變影響日期的處理方式。也許這是一個錯誤 - 我不能說。但是,如果你想堅如磐石的查詢,那麼停止在任何代碼中使用mm/dd/yyyy(而不僅僅是sql)。我熟悉的大多數本地java使用iso標準日期序列。請你留意,MM/DD/yyyy是世界人口因此標準,如ISO 8601 –

+0

感謝您的幫助只是一小部分!這實際上正是你提到的。在用於創建解釋查詢字符串的算法中存在一個錯誤。將日期固定爲yyyy/mm/dd解決了問題。 :) – user161733

相關問題