在SQL Server中,如何将日期转换为格式为M/D/YYYY的字符串?(没有前导零,不是MM/DD/YYYY)

thu*_*eek 11 sql-server date-conversion sql-server-2008 date-formatting

现在,我的代码对日期字段进行了以下转换:

convert(varchar, Citation.PublishedOn, 101)
Run Code Online (Sandbox Code Playgroud)

但是,返回的日期类似于03/01/2010.请求是将日期显示为3/1/2010(没有前导零,但是有4位数年份).我查看了http://msdn.microsoft.com/en-us/library/ms187928.aspx,我没有看到任何明确排除前导零的内容.

如何格式化日期以排除前导零?

Mar*_*llo 16

我就是这样做的:

DECLARE @dt datetime
SET @dt= Citation.PublishedOn
SELECT LTRIM(STR(MONTH(@dt)))+'/'+LTRIM(STR(DAY(@dt)))+'/'+STR(YEAR(@dt),4)
Run Code Online (Sandbox Code Playgroud)

您选择日期,然后从中提取日期,月份和年份,并使用月份和日期切断前导零ltrim().

如果您不想声明变量,则可以执行此操作

SELECT LTRIM(STR(MONTH(Citation.PublishedOn)))+'/'+LTRIM(STR(DAY(Citation.PublishedOn)))+'/'+STR(YEAR(Citation.PublishedOn),4)
Run Code Online (Sandbox Code Playgroud)

但是,这意味着多次拉出相同的值.


jin*_*ula 6

你可以使用FORMAT功能,它只是为这种东西而构建的,虽然我同意如果你可以等到在客户端进行格式化,你可能会更好,因为你可以灵活地将这些数据用作日期沿线的任何一点(ymmv - 更多的是最佳实践).

例:

FORMAT ( table.myDateColumn, 'd', 'en-US' )
Run Code Online (Sandbox Code Playgroud)

请参阅http://msdn.microsoft.com/en-us/library/hh213505.aspx

可能在旧版本的SQL Server中不可用