2016-06-18 57 views
-1

我的数据库中有以下格式的日期。SQL中的日期转换

10/16 - mm/yy

我需要将其转换为:

October/16

这可能吗?

如果不可能,请告诉我为什么。

+0

也许知道数据库会帮助我们! –

+0

你使用了什么[标签:rdbms]? – Mureinik

+0

我是usig SQL Server 2014. – JiLaBaJi

回答

1

这不是日期,它缺少一天,这是存储年/月的不好方法。应该有一个4位数的年份以避免混淆,并且应该首先列出年份以实现正确的排序,例如, '2016/10'或数字值201610

您可以先将其转换为一个日期,然后使用的格式DISPLY单月/年:

set dateformat myd; 
select format(cast(mystupidcolumn + '/1' as date), 'MMMM/yy') 

或者SUBSTR月份部分,并使用CASE。

0

当然可以,这取决于你使用什么数据库调用日期函数 如果列DATETIME格式

  • SQL服务器DATENAME(Month, GETDATE())
  • MySQL数据库MONTHNAME(now())

否则 转换它会在您选择的数据库或您的代码逻辑 拆分值和查找月enum或假的DA TE被接受和完成日期格式像01/10/16

所以这样做SELECT DATENAME(Month, datecolumn) + '/' + YEAR (datecolumn)

你也可以用它代替Year功能DATEPART(yy,datecolumn) 你与格式做的方式看起来就像 CONVERT(VARCHAR(11),GETDATE(),106) 但除外得到一个月JUN

+0

请参阅我的日期格式.. – JiLaBaJi

+0

我更新了答案希望这个帮助更多,注意不使用日期格式功能 –

+0

转换日期和/或时间从字符串转换失败。我认为这个日期格式的错误只有两个部分。 – JiLaBaJi

0

的第3字符尝试这种格式,

SELECT DATENAME(month, DATEADD(month, @mydate-1, CAST('2008-01-01' AS datetime))) 
0

您可以通过使用此代码

select datename(month, YourColumnName) + '/' + right(YEAR(YourColumnName),2) 
FROM yourTableName 

简单地改变yourColumnName与表列的名称和yourTableName与表的名称显示日期。

+0

我得到这个转换失败时,从字符串错误转换日期和/或时间.. – JiLaBaJi

+0

请注意我的日期格式.. – JiLaBaJi