2014-04-15 120 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