Как вернуть только дату из типа данных SQL Server DateTime - PullRequest
1607 голосов
/ 22 сентября 2008
SELECT GETDATE()

Возвращает: 2008-09-22 15:24:13.790

Я хочу эту часть даты без временной части: 2008-09-22 00:00:00.000

Как я могу получить это?

Ответы [ 43 ]

5 голосов
/ 19 ноября 2014
DECLARE @yourdate DATETIME = '11/1/2014 12:25pm'    
SELECT CONVERT(DATE, @yourdate)
4 голосов
/ 30 апреля 2015

Я предпочитаю следующее, которое не было упомянуто:

DATEFROMPARTS(DATEPART(yyyy, @mydatetime), DATEPART(mm, @mydatetime), DATEPART(dd, @mydatetime))

Это также не заботится о локальном или двойном преобразовании - хотя каждый 'datepart', вероятно, делает математику. Так что это может быть немного медленнее, чем метод датедифф, но для меня это гораздо более понятно. Особенно, когда я хочу сгруппировать по году и месяцу (установите день равным 1).

4 голосов
/ 20 июля 2016

Начиная с SQL SERVER 2012, вы можете сделать это:

SELECT FORMAT(GETDATE(), 'yyyy-MM-dd 00:00:00.000')

4 голосов
/ 24 мая 2016

на SQL Server 2000

CAST(
(
    STR( YEAR( GETDATE() ) ) + '/' +
    STR( MONTH( GETDATE() ) ) + '/' +
    STR( DAY( GETDATE() ) )
)
AS DATETIME)
4 голосов
/ 21 мая 2016

Дата:

SELECT CONVERT(date, GETDATE())
SELECT CAST(GETDATE() as date)

Время:

SELECT CONVERT(time , GETDATE() , 114)
SELECT CAST(GETDATE() as time)
4 голосов
/ 08 сентября 2017

Просто вы можете сделать это так:

SELECT CONVERT(date, getdate())
SELECT DATEADD(dd, 0, DATEDIFF(dd, 0, @your_date))
SELECT DATEADD(dd, 0, DATEDIFF(dd, 0, GETDATE()))

Выходы как:

2008-09-22 00:00:00.000

Или просто так:

SELECT CONVERT (DATE, GETDATE()) 'Date Part Only'

Результат:

Date Part Only
--------------
2013-07-14
3 голосов
/ 17 мая 2014

почему вы не используете DATE_FORMAT (your_datetiem_column, '% d-% m-% Y')?

EX: select DATE_FORMAT( some_datetime_column, '%d-%m-%Y' ) from table_name

Вы можете изменить последовательность m, d и года, переставив '%d-%m-%Y' part

3 голосов
/ 21 октября 2015

Этого не хватало во всех ответах, может быть, оно не самое эффективное, но очень простое для написания и понимания, не требуется стиль, нет сложных функций даты.

SELECT CONVERT(DATETIME,CONVERT(DATE,((GETDATE()))))
3 голосов
/ 15 января 2016

Я знаю, что это старо, но я не вижу, где кто-то так утверждал. Из того, что я могу сказать, это стандарт ANSI.

SELECT CAST(CURRENT_TIMESTAMP AS DATE)

Было бы хорошо, если бы Microsoft также могла поддерживать стандартную переменную ANSI CURRENT_DATE.

2 голосов
/ 29 марта 2014

Вы можете использовать следующее для части даты и форматирования даты:

DATENAME => Возвращает символьную строку, которая представляет указанную часть даты указанной даты

DATEADD => Функция DATEPART() используется для возврата одной части даты / времени, например года, месяца, дня, часа, минуты и т. Д.

DATEPART => Возвращает целое число, представляющее указанную часть даты указанной даты.

CONVERT() => Функция CONVERT() - это общая функция, которая преобразует выражение одного типа данных в другой. CONVERT() Функция может использоваться для отображения даты / времени в различных форматах.

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