2014-10-07 150 views
0

SELECT STR_TO_DATE('1.1.2000 0:00:00','%e.%c.%Y')會落得像2000-01-01MySQL的STR_TO_DATE結束爲「0」(零)

,但是當我通過運行

SELECT 
FirstDisplayedDate, 
FirstDisplayedDate = STR_TO_DATE(FirstDisplayedDate,'%e.%c.%Y') 
FROM product 

我會試圖做同樣的柱值1.1.2000 0:00:00每行都得到零(NOT NULL!)。

我在做什麼錯? :(

回答

0

STR_TO_DATE()函數是DATE_FORMAT()函數的逆,它需要一個字符串str以及格式字符串格式。

STR_TO_DATE()如果格式字符串包含日期和時間返回DATETIME值零件,或DATETIME值如果字符串包含日期或時間部分。

如果日期,時間或日期時間VA從str提取的lue是非法的STR_TO_DATE()返回NULL併產生警告。

服務器掃描str嘗試將格式與它匹配。格式字符串可以包含文字字符和格式說明符,以%開頭。文字字符格式爲必須字面上匹配str。格式說明符格式爲必須匹配str中的日期或時間部分。

而且,爲了獲得零的原因是未指定的日期或時間部分有0的值,因此未完全指定的值str產生一些結果或所有部分設置爲0,例如:

mysql> SELECT STR_TO_DATE('abc','abc'); 
      -> '0000-00-00' 
mysql> SELECT STR_TO_DATE('9','%m'); 
     -> '0000-09-00' 
mysql> SELECT STR_TO_DATE('9','%s'); 
     -> '00:00:09' 

檢查在查詢中使用的日期/時間匹配的格式,並確保您的數據庫中的行包含,它可以被轉換爲日期,並沒有從功能指定輸出值相同的數據庫字段:

SELECT 
    FirstDisplayedDate, 
    STR_TO_DATE(FirstDisplayedDate,'%e.%c.%Y') AS Converted 
FROM product 

Herehere更多信息如何正確使用該功能。

0

你得到你所寫的:FirstDisplayedDate = STR_TO_DATE(FirstDisplayedDate,'%e.%c.%Y')比較FirstDisplayedDateSTR_TO_DATE(FirstDisplayedDate,'%e.%c.%Y'),如果它們不相等則返回零。我想你想在這裏使用別名:

SELECT 
    FirstDisplayedDate, 
    STR_TO_DATE(FirstDisplayedDate,'%e.%c.%Y') AS FirstDisplayedDate2 
FROM product