Вопросы преобразования формата даты в SQL - PullRequest
0 голосов
/ 02 апреля 2012

Мне нужно, чтобы мои даты были в следующем формате:

12/3/2011 например, в отличие от 12/03/2011

SQL, который я сейчас использую для набора результатов:

CONVERT(VARCHAR(10), Created, 105) as Created

Как я могу это сделать, спасибо!

Ответы [ 5 ]

4 голосов
/ 02 апреля 2012

В SQL Server нет стандартного формата даты, который возвращает одну цифру за дни или месяцы.Вы можете свернуть свои собственные функции MONTH, DAY и YEAR

-- M/D/Y format (USA)
SELECT CAST(MONTH(@date) AS varchar(2)) + '/'
       + CAST(DAY(@date) AS varchar(2)) + '/'
       + CAST(YEAR(@date) AS varchar(4))

или

-- D/M/Y format (everywhere else)
SELECT CAST(DAY(@date) AS varchar(2)) + '/'
       + CAST(MONTH(@date) AS varchar(2)) + '/'
       + CAST(YEAR(@date) AS varchar(4))
1 голос
/ 02 апреля 2012

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

1 голос
/ 02 апреля 2012

CONVERT (CHAR (10), CONVERT (DATETIME, Created), 103)

0 голосов
/ 02 апреля 2012

Есть лучшее предложение. Я бы добавил функцию форматирования, потому что то, что вы просите, немного необычно,

http://www.sqlusa.com/bestpractices2005/centurydateformat/

Проверьте fnFormatDate. Затем вы можете отформатировать его так, как хотите, но он может / не может быть встроенным, что вы и хотите сделать с оператором

ЗАМЕНА (КОНВЕРТ (VARCHAR (10), Создано, 105), '\ 0', '\') как Создано

0 голосов
/ 02 апреля 2012

Добавьте REPLACE '/ 0' с помощью '/' и затем проверьте, является ли ЛЕВЫЙ или первый символ 0

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...