SQL Server是否具有Date_Format函数?


8

我发现的只是DateFormat我可以选择的预定义列表,像这样

我记得在MySQL(以及PostgeSQL?)中,您可以定义日期格式:

DATE_FORMAT(now(),'&m_%Y') --for 02_2012 etc.

SQL Server是否具有相同的功能?我看到人们必须编写一个函数来执行此类操作,它是否具有内置函数?


编辑:

我刚刚找到了DatePart功能。它可以以Month作为数字,但是即使我使用,也总是返回1位数 datePart(MM, getdate())



1
通常,格式化应由客户端而不是数据库处理。话虽如此,如果您必须格式化数据库输出,那么Martin Smith已经提供了选项。
JSR

Answers:


16

还没。

您需要使用CONVERT样式参数,或与DATEPART或一起修改内容DATENAME

SQL Server 2012将具有FORMAT接受.NET Framework格式字符串的功能

句法:

FORMAT ( value, format [, culture ] )

用法示例

SELECT FORMAT(getdate(), 'dd/MM/yyyy', 'en-US' ) 

您始终可以使用CLR集成并创建自己的UDF,它对2005或2008做相同的事情。


啊,2012年!哦,我想我会像您说的那样编写UDF。谢谢
King Chan

那太好了。
Gordon Bell

1
@KingChan和Martin:关于使用SQLCLR在SQL Server 2005/2008/2008 R2中完成此操作,总是可以选择下载SQL#的免费版本(我是作者的,但Date_Format是免费的),并且则无需进行任何编码。我有一些示例,也有一些SQL#.Date_Format内置FORMAT于此SO答案的示例:是否可以通过SQL Server中的自定义格式获取日期?:-)
所罗门·鲁兹基

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.