在SQL Server中格式化日期的简便方法

时间:2014-08-22 15:57:17

标签: sql-server sql-server-2008 tsql

永远不明白为什么SQL Server不允许您指定自定义日期格式,如:

CONVERT(varchar(22),yourdate,'mm/dd/yyyy hh:mi:ss AM')

并且您必须使用它们提供的样式编号,然后使用REPLACE,SUBSTRING等来提供您想要的格式。

有更好的方法吗?提出我想要的(非常常见的)格式的最佳方法是什么?我提出的任何事情都太复杂了。

感谢。

2 个答案:

答案 0 :(得分:2)

您的想法是,您可以在"日期"中使用特定格式。根据您的需要,SQL Server为这种情况提供了很多功能。

SQL SERVER 2008

SELECT  
CONVERT(VARCHAR, CAST( SUBSTRING(CAST(20070807000000 AS VARCHAR),1,8) 
AS DATETIME ), 103)

结果:07/08/2007

您可以看到更多格式here

SQL SERVER 2012& 2014

DECLARE @d DATETIME = '10/01/2011';
SELECT FORMAT ( @d, 'd', 'en-US' ) AS 'US English Result'
,FORMAT ( @d, 'd', 'en-gb' ) AS 'Great Britain English Result'

美国英语成绩:10/1/2011

英国英语结果:01/10/2011

更多信息here


设置DATEFORMAT

请记住,如果要更改查询中日期的格式,可以使用此子句。

示例:

SET DATEFORMAT YMD -- You can use 'DMY' or 'MDY'
SELECT GETDATE()

答案 1 :(得分:1)

要生成您指定的格式,我会使用样式101的一部分和样式109的一部分(来自http://msdn.microsoft.com/en-us/library/ms187928(v=sql.100).aspx),如下所示:

CONVERT(CHAR(11), @YourDatetime, 101) + STUFF(RIGHT(CONVERT(CHAR(26), @YourDatetime, 109), 14), 9, 4, ' ')