永远不明白为什么SQL Server不允许您指定自定义日期格式,如:
CONVERT(varchar(22),yourdate,'mm/dd/yyyy hh:mi:ss AM')
并且您必须使用它们提供的样式编号,然后使用REPLACE,SUBSTRING等来提供您想要的格式。
有更好的方法吗?提出我想要的(非常常见的)格式的最佳方法是什么?我提出的任何事情都太复杂了。
感谢。
答案 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, ' ')