2015-10-16 21 views
-2

如果日期是10/16/2015,列datetime型“二零一五年十月十六日10:09:19.443”如何显示在SQL Server MONTHNAME和年

如何只月份和年份显示为“OCT-15 '在SQL Server中?

+4

不要在SQL中这样做,在UI层执行此操作。 SQL在日期格式化方面并不好,也不应该(在大多数情况下) – DavidG

+0

什么版本的SQL Server? – Siyual

+0

我知道,但我没有在UI中使用,我需要使用某处作为参数 – user1030181

回答

5

如果你正在使用SQL Server 2012或更高版本,可以使用Format()功能:

Declare @Date DateTime = '10/16/2015' 
Select Format(@Date, N'MMM-yy') 

结果:

Oct-15 

编辑 - 在@ lad2025的评论来看,如果必要的话,你可能需要还要添加en-US区域设置:

Declare @Date DateTime = '10/16/2015' 
Select Format(@Date, N'MMM-yy', 'en-US') 
+1

为了确保语言环境https://data.stackexchange.com/stackoverflow/query/376711,例如当用户有不同时,我会加上'en-US'。 – lad2025

+1

@ lad2025啊,这是一个很好的观点 - 我没有考虑过这个问题。 – Siyual

1

如果哟您正尝试运行快速附加查询以查看格式为MMM-YY的结果,但无法访问FORMAT function(即,使用MS SQL Server 2008或更早版本),你可以这样做:

SELECT replace(right(convert(varchar(9), date_column, 6), 6), ' ', '-') 
FROM my_table 

但是,如果你正在编写一个应用程序,并想提出的日期到最终用户在这种特定的格式,你应该做的格式在主机语言中。

-2

查看SQLServer中的DatePart方法并在postgreSQL中解压缩。

+0

这是如何回答这个问题的? –

+0

他可以使用这些方法的组合来提取相关部分,然后根据需要组合它们。 –

+0

有什么方法?你的回答更多的是评论,并没有引用或备份你说的任何东西。 PostgreSQL是一个对象数据库管理系统,与问题无关。 –

1

这是一个非常简单(快速)的方式来转换从DATETIME,虽然我同意其他意见和答案,一个参数应该保持在规范日期时间格式,这样任何日期处理是可移植的跨语言:

SELECT RIGHT(REPLACE(CONVERT(VARCHAR(9), CAST('2015-10-16 10:09:19.443' AS DATETIME), 6), ' ', '-'),6) AS [Mon-YY]