SQL-запрос для преобразования даты и времени в дату
В MS SQL Server даты сложны для новичков, так как при работе с БД формат даты в таблице должен совпадать с датой ввода для вставки. В различных сценариях вместо даты используется DateTime (время также связано с датой). В этой статье мы узнаем, как преобразовать DateTime в DATE, используя три разные функции.
- В РОЛЯХ( )
- КОНВЕРТИРОВАТЬ( )
- TRY_CONVERT()
- Использование подстроки
Целью данных этой статьи является преобразование DateTime в Date в SQL Server, например ГГГГ-ММ-ДД ЧЧ:ММ: СС в ГГГГ-ММ-ДД.
Способ 1: Использование приведения
Это функция для приведения одного типа к другому типу, поэтому здесь мы будем использовать для приведения DateTime к дате.
Синтаксис:
CAST( dateToConvert AS DATE)
Пример 1:
Запрос:
SELECT CAST(GETDATE() AS DATE) AS CURRENT_DATE
Выход:
GETDATE(): эта функция возвращает текущую дату и время, например (2021-08-27 17:26:36.710)
Пример 2;
Запрос:
SELECT CAST("2021-08-27 17:26:36.710" AS DATE) AS CURRENT_DATE_GFG
Выход:
Способ 2: использование конвертации
Это функция для преобразования одного типа в другой тип, поэтому здесь мы будем использовать ее для преобразования DateTime в дату.
Синтаксис:
CONVERT(DATE, dateToConvert)
Пример 1:
Запрос:
SELECT CONVERT(DATE, GETDATE()) AS CURRENT_DATE_GFG
Выход:
Пример 2:
Запрос:
SELECT CONVERT(DATE, "2021-08-27 17:26:36.710" ) AS CURRENT_DATE_GFG
Выход:
Способ 3: Try_Convert
Это функция для приведения одного типа к другому типу, поэтому здесь мы будем использовать для преобразования даты и времени в дату. если дата недействительна, тогда она будет нулевой, а Convert выдаст ошибку.
Синтаксис:
TRY_CONVERT(DATE, dateToConvert)
ВЫБЕРИТЕ TRY_CONVERT(DATE,'2021-08-27 17:26:36.710′) AS CURRENT_DATE_GFG
Пример 1:
Запрос:
SELECT TRY_CONVERT(DATE,GETDATE()) AS CURRENT_DATE_GFG
Выход:
Пример 2:
Запрос:
SELECT TRY_CONVERT(DATE,"2021-08-27 17:26:36.710") AS CURRENT_DATE_GFG
Выход:
Способ 4: использование подстроки
Это функция для получения короткой строки или подстроки, поэтому здесь мы получаем индекс подстроки от 0 до 11.
Синтаксис:
SUBSTRING( dateToConvert ,0,11)
Пример 1:
Запрос:
SELECT SUBSTRING( "2021-08-27 17:26:36.710" ,0,11) AS CURRENT_DATE_GFG
Выход:
Пример 2;
Запрос:
SELECT SUBSTRING( CONVERT(varchar(17), GETDATE(), 23) ,0,11) AS CURRENT_DATE_GFG
Выход: