2011-01-19 1 views
25

日時フィールドの日付部分を取得しようとしています。 date_formatで取得できるのは分かっていますが、文字列または "varchar"フィールドが返されます。結果をvarcharではなく日付に変換するにはどうすればよいですか?datetimeからdateに変換するクエリmysql

これはvarchar型を返す私のクエリです:

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

私はこの質問からいくつかの組み合わせを試してみましたが、それは動作するように作ることができなかった。

mysql query - format date on output?

すべてのヘルプは高く評価されます。

答えて

36

DATEどちらかCyber​​nateまたはOMGポニーソリューションが動作します

SELECT CAST(orders.date_purchased AS DATE) AS DATE_PURCHASED 
+0

ありがとう!これが私の必要なものです。 = o) – chupeman

26

DATE functionを使用します。

SELECT DATE(orders.date_purchased) AS date 
+2

これがベストです回答。 – Nathanael

+0

"DATE"は認識された組み込み関数名ではないことがわかりました。 " – aayushi

3

としてそれをキャストしてください。基本的な問題は、DATE_FORMAT()関数が日付ではなく文字列を返すことです。あなたは

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

を書いたとき、私はあなたが、本質的に「日付」と呼んで、そのフォーマット文字列に従って「date_purchased」の値をフォーマットしようとするMySQLを求め、代わりの「date_purchased」というコラムを呼んでいたと思います。しかし、その列はもはや日付を含んでいないでしょう、それは文字列を含むでしょう。 (Date_Format()は日付ではなく文字列を返すため)

私はそれがあなたがしたいとは思っていませんが、あなたがしていたことです。

値の見方と値の見方を混同しないでください。 DATE_FORMATの

0

構文:

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

関連する問題