2011-01-19 140 views
25

我正在嘗試獲取日期時間字段的日期部分。我知道我可以用date_format獲得它,但是它返回一個字符串或「varchar」字段。我如何將結果轉換爲日期而不是varchar?將日期時間轉換爲日期的查詢mysql

這是我的查詢返回VARCHAR:

(Select Date_Format(orders.date_purchased,'%m/%d/%Y')) As Date 

我想從這個問題的幾種組合,但不能讓它的工作:

mysql query - format date on output?

任何幫助表示讚賞。

回答

36

嘗試將它轉換爲日期

SELECT CAST(orders.date_purchased AS DATE) AS DATE_PURCHASED 
26

使用DATE function

SELECT DATE(orders.date_purchased) AS date 
+2

這是最好的回答。 – Nathanael 2014-05-17 19:02:02

+0

它給了我「DATE」不是公認的內置函數名稱。「 – aayushi 2017-07-13 05:50:13

3

無論Cyber​​nate或OMG小馬解決方案將正常工作。根本問題是DATE_FORMAT()函數返回一個字符串,而不是日期。當你寫

(Select Date_Format(orders.date_purchased,'%m/%d/%Y')) As Date 

我想你基本上是問的MySQL嘗試根據該格式字符串「date_purchased」格式化值,和而不是調用該列「date_purchased」,稱之爲「日期」。但該列將不再包含日期,它將包含一個字符串。 (因爲Date_Format()返回一個字符串,而不是日期。)

我不認爲這就是你想要做的,但這就是你正在做的。

不要混淆一個值的外觀與值是什麼。

0

語法DATE_FORMAT的:

SELECT date_format(date_born, '%m/%d/%Y') as my_date FROM date_tbl 

    '%W %D %M %Y %T' -> Wednesday 5th May 2004 23:56:25 
    '%a %b %e %Y %H:%i' -> Wed May 5 2004 23:56 
    '%m/%d/%Y %T'  -> 05/05/2004 23:56:25 
    '%d/%m/%Y'   -> 05/05/2004 
    '%m-%d-%y'   -> 04-08-13 
0

我看到了許多種用途,但我覺得作爲一個參考工具,該佈局更加有用:

SELECT DATE_FORMAT('2004-01-20' ,'%Y-%m-01'); 

enter image description here

相關問題