В SQL Server, как преобразовать дату в строку в формате M/D/YYYY? (без ведущих нулей, не ММ/ДД/гггг)
Прямо сейчас мой код имеет следующее преобразование для поля даты:
convert(varchar, Citation.PublishedOn, 101)
Однако, это возвращает даты, такие как 03/01/2010. Запрос состоял в том, чтобы даты отображались как 3/1/2010 (без ведущих нулей, но с 4-значным годом). Я посмотрел на http://msdn.microsoft.com/en-us/library/ms187928.aspx и я не вижу ничего, что явно исключает ведущие нули.
Как отформатировать дату, чтобы исключить ведущие нули?
4 ответа:
Вот как бы я это сделал:
Вы выбираете дату, затем извлекаете из нее день, месяц и год и отсекаете ведущие нули от месяца и дня с помощью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)
Однако это означало бы многократное извлечение одного и того же значения.
Вы можете использовать функцию форматирования, которая построена именно для такого рода вещей, хотя я согласен, что если вы можете подождать, чтобы отформатировать его на стороне клиента, вам может быть лучше, поскольку вы даете себе гибкость использовать эти данные в качестве даты в любой точке линии (ymmv - просто более оптимальная практика).
Пример:
FORMAT ( table.myDateColumn, 'd', 'en-US' )
См. http://msdn.microsoft.com/en-us/library/hh213505.aspx
Может быть недоступна в более старых версиях SQL Server
Вы могли бы сделать:
STUFF (REPLACE ('/'+CONVERT(CHAR (10), Цитата.PublishedOn ,101),'/0','/'),1,1,")
(на основе http://www.sqlservercentral.com/Forums/Topic1241877-1292-1.aspx.)