Как получить дату из SQL Server в YYYY-MM-DD
формате? Мне нужно это для работы с SQL Server 2000 и выше. Есть ли простой способ сделать это в SQL Server или будет проще преобразовать его программно после получения набора результатов?
Я читал CAST и CONVERT в Microsoft Technet, но нужный мне формат не указан, и изменение формата даты не вариант.
sql-server
tsql
Kinze
источник
источник
Ответы:
Ограничение размера varchar отбивных в той порции, которую вы не хотите.
источник
источник
Начиная с SQL Server 2012 (оригинальный вопрос для 2000):
SELECT FORMAT(GetDate(), 'yyyy-MM-dd')
источник
Форма, которую вы запрашиваете, указана в электронной документации по книгам.
http://msdn.microsoft.com/en-us/library/aa226054(SQL.80).aspx
Например, попробуйте следующее:
источник
convert
Функция спецификатор формата 120 даст вам формат «ГГГГ-ММ-ДД ЧЧ: мм: сс», так что вы просто должны ограничить длину до 10 , чтобы получить только часть даты:Однако форматирование дат обычно лучше выполнять на уровне представления, а не на уровне базы данных или бизнес-уровня. Если вы возвращаете дату, отформатированную из базы данных, то клиентский код должен снова проанализировать ее, если ему нужно будет выполнить какие-либо вычисления.
Пример в C #:
источник
Для ГГГГММДД попробуйте
Я тестировал только на SQLServer2008.
источник
Еще один способ ...
источник
Для тех, кто хотел бы, чтобы часть времени также (я сделал), следующий фрагмент может помочь
источник
Также сделаем трюк, не "отрубая что-либо".
источник
В случае, если кто-то хочет сделать это наоборот и находит это.
Это преобразует строку в немецком формате даты в объект datetime.
Почему 104? Смотрите здесь: http://msdn.microsoft.com/en-us/library/ms187928.aspx
источник
В вашей ссылке и преобразовании используйте стиль 126 таким образом:
CONVERT (varchar(10), DTvalue, 126)
Это усекает время. Ваше требование иметь его в гггг-мм-дд означает, что это должны быть строковый тип данных и дата / время.
Честно говоря, я бы сделал это на клиенте, если у вас нет веских причин не делать этого.
источник
Если вы хотите использовать его как дату, а не
varchar
снова потом, не забудьте преобразовать ее обратно:источник
Я не уверен, почему самый простой способ был проигнорирован / опущен в ответах выше:
Я предпочитаю второй, потому что на каком бы языке вы ни говорили, вы поймете, какая это дата!
Кроме того, SQL Server всегда «понимает» это, когда вы отправляете это в процедуру сохранения, независимо от того, какие региональные форматы установлены на компьютерах - я всегда использую полный год (гггг), название месяца (МММ) и 24-часовой формат (заглавная ЧЧ) в течение часа в моем программировании.
источник
SELECT CONVERT(NVARCHAR(20), GETDATE(), 23)
источник
Вы также можете использовать. Это с использованием нового типа данных
DATE
. Может работать не во всех предыдущих версиях, но значительно упрощено для использования в более поздних версиях.источник
Я хотел бы использовать:
источник
источник
С SQL Server 2008 вы можете сделать это:
CONVERT(date,getdate())
источник
Кажется ненужным делать какие-то странные вещи, если вы хотите, чтобы ваша дата была разделена косой чертой. Просто убеги с обратной косой чертой. В противном случае вы получите точку.
Протестировано на SQL Server 2016
источник
Использование оператора CASE для каждой функции convert / cast всегда работает для меня:
Надеюсь, это было полезно. chagbert.
источник
Это решение работает для меня, просто и эффективно (с 126 тоже)
источник
Если ваш исходный формат даты испорчен, попробуйте что-то вроде:
источник
источник