Как выбрать дату без времени в SQL - PullRequest
230 голосов
/ 26 февраля 2011

Когда я выбираю дату в SQL, она возвращается как 2011-02-25 21:17:33.933. Но мне нужна только часть даты, то есть 2011-02-25. Как я могу это сделать?

Ответы [ 16 ]

464 голосов
/ 17 ноября 2011

Для SQL Server 2008:

Convert(date, getdate())  

Пожалуйста, обратитесь к https://docs.microsoft.com/en-us/sql/t-sql/functions/getdate-transact-sql

137 голосов
/ 26 февраля 2011

Я думаю, он хочет строку

select convert(varchar(10), '2011-02-25 21:17:33.933', 120)
54 голосов
/ 26 февраля 2011

Самый быстрый - datediff, например,

select dateadd(d, datediff(d,0, [datecolumn]), 0), other..
from tbl

Но если вам нужно использовать только значение, вы можете пропустить дату и добавить, например,

select ...
WHERE somedate <= datediff(d, 0, getdate())

, где выражения datediff(d, 0, getdate()) достаточно, чтобы вернуть сегодняшнюю дату без временной части.

34 голосов
/ 28 июля 2014

Используйте CAST (GETDATE () в качестве даты), который работал для меня, просто.

21 голосов
/ 26 февраля 2011
12 голосов
/ 07 сентября 2012

вы можете использовать как это

SELECT Convert(varchar(10), GETDATE(),120) 
10 голосов
/ 09 сентября 2014

Для 2008 старой версии :

SELECT DATEADD(DAY, DATEDIFF(DAY, 0, GETDATE()), 0)

2 голосов
/ 24 октября 2017

Вы можете попробовать это тоже.

SELECT CONVERT(DATE, GETDATE(), 120)
2 голосов
/ 01 февраля 2013

Уже немного поздно, но используйте функцию ODBC "curdate" (угловые скобки 'fn' - escape-последовательность функции ODBC).

SELECT {fn curdate()} 

Выход: 2013-02-01

1 голос
/ 16 апреля 2018

Преобразовать его обратно в дату-время после преобразования в дату, чтобы сохранить то же время данных, если это необходимо

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