В SQL Server, как преобразовать дату в строку в формате M / D / YYYY?(без начальных нулей, не MM / DD / YYYY) - PullRequest
11 голосов
/ 25 мая 2011

Прямо сейчас мой код имеет следующую конверсию для поля даты:

convert(varchar, Citation.PublishedOn, 101)

Однако, это возвращает даты, такие как 03/01/2010Запрос состоял в том, чтобы даты отображались как 01.03.2010 (без начальных нулей, но с 4-значным годом).Я посмотрел на http://msdn.microsoft.com/en-us/library/ms187928.aspx и не вижу ничего, что явно исключало бы начальные нули.

Как отформатировать дату, чтобы исключить начальные нули?

Ответы [ 4 ]

16 голосов
/ 25 мая 2011

Вот как я бы это сделал:

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

Вы выбираете свою дату, затем извлекаете из нее день, месяц и год и отсекаете начальные нули от месяца и дня, используя ltrim().

Если вы не хотите объявлять переменную, вы можете сделать это

SELECT LTRIM(STR(MONTH(Citation.PublishedOn)))+'/'+LTRIM(STR(DAY(Citation.PublishedOn)))+'/'+STR(YEAR(Citation.PublishedOn),4)

Однако это будет означать получение одного и того же значения несколько раз.

6 голосов
/ 13 декабря 2012

Вы можете использовать функцию FORMAT, которая создана именно для такого рода вещей, хотя я согласен, что если вы можете подождать, чтобы отформатировать ее на стороне клиента, вам может быть лучше, если вы дадите себе возможность использовать эти данныекак дата в любой точке линии (ymmv - просто лучшая практика).

Пример:

FORMAT ( table.myDateColumn, 'd', 'en-US' )

См. http://msdn.microsoft.com/en-us/library/hh213505.aspx

Не может бытьдоступно в более старых версиях SQL Server

3 голосов
/ 12 марта 2012

Вы можете сделать:

STUFF (REPLACE ('/' + CONVERT (CHAR (10), Citation.PublishedOn, 101), '/ 0', '/'), 1,1, '')

(на основе http://www.sqlservercentral.com/Forums/Topic1241877-1292-1.aspx.)

2 голосов
/ 31 июля 2012

Я выбрал другой подход, который больше похож на хитрость:

REPLACE(REPLACE('a'+ @table.date ),'a0',''),'a','')

Я думал, что это изящно, но у меня возникла идея после неверной интерпретации трюка STUFF выше.:)

...