Как получить Date из DateTime тип данных в SQL Server?

  1. На SQL Server 2008 и выше
  2. 1. Использование CAST
  3. 2. Использование CONVERT
  4. На SQL Server 2005 и старше
  5. 1. Использование DATEADD и DATEDIFF
  6. 2. Преобразованием в Varchar
  7. Ссылка

В SQL Server есть несколько способов вернуть дату из типа данных DateTime. Делая Разработка и программирование SQL , мы часто сталкиваемся с требованием извлечь столбцы формы, состоящие только из части даты, имеющие дату и время. Здесь я перечислил несколько наиболее распространенных и эффективных способов получить только часть даты из типов данных DateTime и DateTime2 . В SQL Server есть несколько способов вернуть дату из типа данных DateTime

На SQL Server 2008 и выше

В SQL Server 2008 Microsoft представила новый тип данных «дата». Этот тип данных будет хранить только часть даты (день, месяц и год). Вы можете использовать тип данных date вместе с CONVERT или CAST для извлечения части даты из DateTime и DateTime2.

1. Использование CAST

/ * Извлечь часть даты из datetime * / Объявить @MyDateAndTime в качестве даты и времени Установить @MyDateAndTime = '2017-12-15 10: 45: 56.923' SELECT @MyDateAndTime / * Результат * / 2017-12-15 10: 45: 56.923 ВЫБРАТЬ CAST (@MyDateAndTime As date) GO / * Результат * / 2017-12-15 / * Извлечение части даты из datetime2 * / Объявление @ MyDateAndTime2 как datetime2 Установите @ MyDateAndTime2 = '2017-12-16 11: 15: 23.2393473' SELECT @ MyDateAndTime2 / * Результат * / 2017-12-16 11: 15: 23.2393473 ВЫБРАТЬ CAST (@ MyDateAndTime2 As date) GO / * Результат * / 2017-12-16

2. Использование CONVERT

/ * Извлечь часть даты из datetime * / Объявить @MyDateAndTime в качестве даты и времени Установить @MyDateAndTime = '2017-12-15 10: 45: 56.923' SELECT @MyDateAndTime / * Результат * / 2017-12-15 10: 45: 56.923 SELECT CONVERT (date, @MyDateAndTime) GO / * Результат * / 2017-12-15 / * Извлечение части даты из datetime2 * / Объявление @ MyDateAndTime2 как datetime2 Установите @ MyDateAndTime2 = '2017-12-16 11: 15: 23.2393473' SELECT @ MyDateAndTime2 / * Результат * / 2017-12-16 11: 15: 23.2393473 ВЫБРАТЬ КОНВЕРТ (дата, @ MyDateAndTime2) GO / * Результат * / 2017-12-16

На SQL Server 2005 и старше

В SQL Server 2005 и более ранних версиях тип данных даты отсутствует. Итак, мы должны использовать обходной путь, чтобы получить часть даты из даты-времени.

1. Использование DATEADD и DATEDIFF

Одним из распространенных способов получения части даты из datetime является использование DATEADD вместе с DATEDIFF для удаления временной части переменной. Вот пример:

Объявите @MyDateAndTime в качестве даты и времени. Установите @MyDateAndTime = '2017-12-15 10: 45: 56.923' SELECT @MyDateAndTime / * Result * / 2017-12-15 10: 45: 56.923 SELECT DATEADD (dd, 0, DATEDIFF (dd, 0, @MyDateAndTime)) / * Результат * / 2017-12-15 00: 00: 00.000

2. Преобразованием в Varchar

Другой популярный метод - преобразование даты и времени в varchar с кодом стиля 101, который будет возвращать часть даты в формате мм / дд / гггг.

Объявите @MyDateAndTime в качестве даты и времени. Установите @MyDateAndTime = '2017-12-15 10: 45: 56.923' SELECT @MyDateAndTime / * Result * / 2017-12-15 10: 45: 56.923 SELECT CONVERT (VARCHAR (10), @MyDateAndTime, 101) / * Результат * / 15.12.2017

Ссылка

  • Вопрос о возврате даты из типа данных SQL Server datetime в Переполнение стека ,