получить дату и время на сегодня в полночь и добавить к ней - PullRequest
23 голосов
/ 09 октября 2011

Существует ли команда sql, чтобы получить сегодняшнюю дату в полночь и добавить к ней количество минут?

Ответы [ 5 ]

34 голосов
/ 03 июля 2013

Дата сейчас полночь:

Select DATEADD(d,0,DATEDIFF(d,0,GETDATE()))

ДОБАВИТЬ 600 минут:

Select DATEADD(mi,600,DATEDIFF(d,0,GETDATE()))
23 голосов
/ 09 октября 2011

Да, просто используйте функции datediff и dateadd, чтобы убрать время с любой даты, а затем добавить дробную часть дня к этому числу

Declare @aDate DateTime
Set @aDate = getDate()
Declare @Minutes Integer
Set @minutes = 600 -- 10 hours

Select DateAdd(day, DateDiff(day, 0, @aDate), 0) + @minutes / 1440.0  -- 1440 min/day
 -- or You could also use the dateadd again...
Select DateAdd(minute, @minutes , DateAdd(day, DateDiff(day, 0, @aDate), 0))

Оба варианта возврата возвращаются в 10:00 в тот же день(более менее).Это работает из-за, ну, конечно, этого SO ответа

РЕДАКТИРОВАТЬ: Добавлен пример сценария, чтобы показать, как это работает:

declare @dtTim datetime = getDate()
declare @today datetime = dateAdd(day, dateDiff(day, 0, @dtTim ), 0)
select  @dtTim, @today
13 голосов
/ 09 октября 2011

Вы также можете привести к date, чтобы убрать часть времени:

declare @minutes int = 600
declare @start datetime = cast(getdate() as date)
declare @finish datetime = dateadd(mi, @minutes, @start)

Хотя, если честно, я понятия не имею, как он работает по сравнению с

dateadd(day, datediff(day, 0, getdate()), 0)

2 голосов
/ 24 апреля 2014

Используйте следующее:

select DATEADD(SECOND, 36000, CAST(CONVERT(VARCHAR(10), GETDATE(), 101) AS datetime))

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

Пожалуйста, обратитесь к этому для форматирования даты / времени в SQL Server: SQL Server Форматирование даты / времени

0 голосов
/ 12 января 2017

Мне пришлось сделать нечто подобное, создать процедуру для запуска с определенного времени предыдущего дня до определенного времени текущего дня. Это то, что я сделал, чтобы установить дату начала 16:30 предыдущего дня, в основномвычтите части, которые вы не хотите, чтобы вернуть их к 0, затем добавьте значение, которое вы хотите, чтобы оно было.

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