22

Как вернуть только дату из типа данных DateTime в SQL Server

12

У меня есть запрос к базе данных:

SELECT GETDATE()

Этот запрос возвращает: 2008-09-22 15:24:13.790.

Я хочу получить только дату без времени: 2008-09-22 00:00:00.000.

Как я могу этого добиться?

4 ответ(ов)

2

Если вы используете SQL Server 2008 и выше, то для получения текущей даты без времени вы можете использовать следующий запрос:

SELECT CAST(GETDATE() AS DATE);

Этот запрос преобразует текущую дату и время, получаемые функцией GETDATE(), в тип данных DATE, который содержит только дату без времени.

0

Ваша SQL-запрос выполняет преобразование текущей даты и времени из формата datetime в формат varchar, а затем обратно в формат datetime. Давайте разберем этот запрос подробнее.

  1. GETDATE() — функция, которая возвращает текущее время и дату в формате datetime.
  2. CONVERT(varchar, GETDATE(), 101) — это преобразование текущей даты в строку формата MM/DD/YYYY (код 101 означает именно этот формат).
  3. Затем, мы снова преобразуем полученную строку в формат datetime с помощью CONVERT(datetime, ...).

Фактически, ваш запрос приводит дату к строковому формату перед повторным преобразованием в datetime, что, как правило, не является необходимым шагом, так как GETDATE() уже возвращает дату в формате datetime.

Если вам нужно просто получить текущее значение времени в формате datetime, вы можете использовать:

SELECT GETDATE()

Если вы хотите получить дату в определенном формате для отображения, лучше использовать только CONVERT, например:

SELECT CONVERT(varchar, GETDATE(), 101) AS FormattedDate

Таким образом, запрос можно упростить, избегая лишних преобразований.

0

Просто сделайте:

SELECT CAST(date_variable AS date)

или, если вы используете PostgreSQL:

SELECT date_variable::date

Это, кстати, называется приведение типов!

0

Чтобы вернуть дату в нужном формате, вы можете использовать следующий код:

Для SQL Server 2008 и более ранних версий:

CAST(OrderDate AS date)

Этот код будет работать в SQL Server 2010 и вернёт дату в формате, например, 12/12/2013.

Для SQL Server 2012 и более поздних версий используйте следующий код:

CONVERT(VARCHAR(10), OrderDate, 111)

Этот запрос также вернёт дату в формате, указанном в строке, где 111 задаёт формат даты в виде "гггг/мм/дд".

Чтобы ответить на вопрос, пожалуйста, войдите или зарегистрируйтесь