2011-01-19 25 views
25

Bir datetime alanının tarih bölümünü almaya çalışıyorum. Bunu date_format ile alabildiğimi biliyorum, ancak bu bir string veya "varchar" alanını döndürüyor. Sonucu tarihe ve varchar olarak nasıl değiştirebilirim?Tarih-saatten itibaren dönüştürülecek sorgu mysql

Bu varchar dönen benim sorgu:

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

Bu soru birkaç kombinasyonları denedim ama işe gelemedi:

mysql query - format date on output?

Herhangi bir yardım takdir edilmektedir.

cevap

36

deneyin çalışacak bir TARİH

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

Teşekkürler! İhtiyacım olan bu. = O) – chupeman

26

Kullanım DATE function:

SELECT DATE(orders.date_purchased) AS date 
+2

Bu en iyisi Cevap. – Nathanael

+0

, "DATE" nin tanınmış bir yerleşik işlev adı olmadığını söylüyor. – aayushi

3

Ya Cybernate veya OMG Midilli çözüm olarak dökmeyi. Temel sorun, DATE_FORMAT() işlevinin bir tarih değil bir dize döndürmesidir. Eğer

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

yazdığımda ben aslında o dizi biçimine göre "date_purchased" değerleri biçimlendirmek için denemek için MySQL soran ve yerine "tarihi" diyoruz, "date_purchased" bu sütunu çağırıyorlardı düşünüyorum. Ancak bu sütun artık bir tarih içermiyordu, bir dize içeriyordu. (Date_Format() bir dize döndürdüğünden, tarih değil.)

Yapmak istediğin şeyin bu olduğunu sanmıyorum, ama yaptığın şey buydu.

Bir değerin, değerin ne ile birlikte göründüğünü karıştırmayın. DATE_FORMAT ait

0

sözdizimi:

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

Ben kullandığı birçok türlerini görmek, ama bu düzen daha kullanışlı bir referans aracı olarak bulmak:

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

enter image description here