如何编写查询以选择日期格式为“ DD-MMM-YYYY”的数据?

时间:2019-01-23 09:27:23

标签: sql sql-server tsql

我想在SELECT语句中以'DD-MMM-YYYY'格式编写查询,例如:

'1-Jan-2019''23-Mar-2018'

4 个答案:

答案 0 :(得分:4)

简单

SELECT CONVERT(VARCHAR, GetDate(), 106)

返回:

23 Jan 2019

请参见 CAST and CONVERT ,其中 Date and Time Styles

如果您确实要返回'-'分隔符,则可以这样做

SELECT REPLACE(CONVERT(VARCHAR, GetDate(), 106), ' ', '-')

返回:

23-Jan-2019

答案 1 :(得分:2)

您可以根据需要利用T-SQL FORMAT()请求输出和区域性的确切格式:

SELECT FORMAT(GETDATE(), '%d-MMM-yyyy', 'en')

自SQL Server 2012起可用

但是,更好的做法是在应用程序级别上控制格式

答案 2 :(得分:1)

如果放置破折号,例如那么'2018年1月1日'就可以直接使用了。如果您不知道数据库设置,它也是一种非常实用的格式。

请记住,不同语言的月份名称是不同的。

答案 3 :(得分:0)

通过将SQL中的Convert转换为数字格式,您可以轻松完成此操作。它将接近您想要的格式,但是对于您的格式,您将需要通过对转换结果使用Replace调用将字符串中的空格替换为破折号。

参考:https://docs.microsoft.com/en-us/sql/t-sql/functions/cast-and-convert-transact-sql?view=sql-server-2017

示例:

select REPLACE(CONVERT(VARCHAR(20), GetDate(), 106), ' ', '-')