2013-10-05 3 views
56

Как получить текущую дату в MS-SQL Server 2008 R2?Получение текущей даты на SQL Server?

Формат столбца в моей базе данных DATETIME и даты хранятся в следующем формате:

+++++++++++++ Vrdate ++++++++++ 
|        | 
| 2012-11-18 00:00:00.000 | 
| 2012-11-19 00:00:00.000 | 
| 2013-11-18 00:00:00.000 | 
| 2012-12-01 00:00:00.000 | 
| 2010-10-09 00:00:00.000 | 
| 2012-11-11 00:00:00.000 | 
|        | 
+++++++++++++++++++++++++++++++ 

я искал, но не смогли найти способ, чтобы получить дату в этом формате (т.е. который имеет время, связанное с ним, в 00:00:00.00). Я нашел GETDATE() функцию, но которая обеспечивает текущее время вместе с датой, я хочу получить дату в следующем формате: CurrentDate 00:00:00.00

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

ответ

89
SELECT CAST(GETDATE() AS DATE) 

Возвращает текущую дату с удаленной частью времени.

DATETIME s не хранятся в следующем формате. Они хранятся в двоичном формате.

SELECT CAST(GETDATE() AS BINARY(8)) 

Формат отображения в вопросе не зависит от хранилища.

Форматирование в определенный формат отображения должно выполняться вашим приложением.

+6

Я хотел бы добавить, что если OP хочет получить результат DATETIME с параметром TIME, установленным на '00: 00: 00.000 ', тогда он может использовать 'SELECT CAST (CAST (GETDATE() AS DATE) AS DATETIME)'. – LightBulb

+0

@KamranAhmed, в этом случае я хотел бы указать вам на [T-SQL Date and Time Function Reference] (http://technet.microsoft.com/en-us/library/ms186724 (v = sql.105)) .aspx). – LightBulb

+2

Обновите и попробуйте еще раз. Я допустил ошибку, а затем изменил ее на правильную ссылку. Простите за это. – LightBulb

11

Как вы используете SQL Server 2008, перейдите к ответу Мартина.

Если вы окажетесь необходимости сделать это в SQL Server 2005, где у вас нет доступа к типу Date колонке, я хотел бы использовать:

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

SQLFiddle

Смежные вопросы