web-dev-qa-db-ja.com

日付時刻から日付mysqlに変換するクエリ

日時フィールドの日付部分を取得しようとしています。 date_formatで取得できることは知っていますが、文字列または「varchar」フィールドを返します。結果をvarcharではなく日付に変換するにはどうすればよいですか?

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

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

私はこの質問からいくつかの組み合わせを試しましたが、機能させることができませんでした:

mysql query-出力の日付をフォーマットしますか?

どんな助けも大歓迎です。

36
chupeman

DATEとしてキャストしてみてください

SELECT CAST(orders.date_purchased AS DATE) AS DATE_PURCHASED
58
Chandu

DATE関数 を使用します。

SELECT DATE(orders.date_purchased) AS date
37
OMG Ponies

Cyber​​nateまたはOMG Poniesのいずれかのソリューションが機能します。基本的な問題は、 DATE_FORMAT() 関数が日付ではなく文字列を返すことです。書いたとき

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

基本的に、MySQLにそのフォーマット文字列に従って_date_purchased_の値をフォーマットするように依頼し、そのカラム_date_purchased_を呼び出す代わりに「Date」と呼ぶようにしたと思います。しかし、その列には日付が含まれなくなり、文字列が含まれます。 (Date_Format()は日付ではなく文字列を返すため。)

私はそれがあなたがしたかったとは思わないが、それはあなたがしていたことだ。

値がどのように見えるかを値と混同しないでください。

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
2
Dedi Koswara

私は多くの種類の用途を見ていますが、このレイアウトは参照ツールとしてより便利だと思います:

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

enter image description here

1
manish1706