2014-04-15 159 views
0

我想以mm/yyyy格式更改日期格式。我的這樣的查詢。Mysql:更改日期格式

select shipwynum, 
     IF (s.adjdeldat != '', s.adjdeldat,s.condeldat) as -- adjdeldat and condeldat are date type 
     deliverydate, 
FROM ship 
Result of that query come in yyyymmdd fromat but i want result in mm/yyyy format. 

我使用DATE_FORMAT像

DATE_FORMAT(s.adjdeldat,'%m/%Y') 
DATE_FORMAT(s.condeldat,'%m/%Y') 

,但它不能正常工作。

+0

什麼是柱'adjdeldat'的數據類型?你可以發佈'show variable'date_format''的結果嗎? –

+0

數據類型爲varchar,用於adjdeldat和condeldat,它將數據保存在yyyymmdd或yyyymm中 – Tarzan

+0

您的意思是某些數據採用'20140415'格式,另一些採用'201404'格式? –

回答

1

從評論和張貼

Data type is varchar for adjdeldat and condeldat and it save data inyyyymmddoryyyymm

I want to change the date format inmm/yyyy

You mean some data is in20140415format and some in201404format?

Yes, and i want that data in04/2014format

更改您的查詢,如下

select 
    shipwynum, 
    if(s.adjdeldat != '', 
     date_format(str_to_date(s.adjdeldat, '%Y%m%d'), '%m/%Y'), 
     date_format(str_to_date(s.condeldat, '%Y%m%d'), '%m/%Y') 
) deliverydate, 
from ship 

即使一些日期值錯過dd部分中,MySQL默默的00str_to_date轉換時替換它們。

select 
    @dt:=str_to_date('201404', '%Y%m%d') dt, 
    date_format(@dt, '%m/%Y') df; 

結果

+------------+---------+ 
| dt   | df  | 
+------------+---------+ 
| 2014-04-00 | 04/2014 | 
+------------+---------+ 
1 row in set (0.00 sec) 
+0

它給我的語法錯誤:你的SQL語法有錯誤; ('%Y'),date_format(str_to_date(s.condeldat,'%Y%m%d'),'%m%Y')))的檢查手冊,作爲 '在第2行 – Tarzan

+0

好的。我不小心打了一個反勾。更新了我的答案。請檢查。 –

+0

謝謝,現在工作。 – Tarzan