Ответ 1
Попробуйте это
SELECT DATEADD(day, DATEDIFF(day, 0, GETDATE()), '03:30:00')
Я пытаюсь добавить пользовательское время к дате в SQL Server 2008 R2.
Вот что я попробовал
SELECT DATEADD(hh, 03, DATEADD(mi, 30, DATEADD(ss, 00, DATEDIFF(dd, 0,GETDATE())))) as Customtime
Используя приведенный выше запрос, я могу это сделать.
Но есть ли какой-либо сокращенный метод, уже доступный для добавления пользовательского времени в datetime?
Попробуйте это
SELECT DATEADD(day, DATEDIFF(day, 0, GETDATE()), '03:30:00')
Для меня этот код выглядит более явным:
CAST(@SomeDate AS datetime) + CAST(@SomeTime AS datetime)
Попробуйте следующее:
SELECT DATEDIFF(dd, 0,GETDATE()) + CONVERT(DATETIME,'03:30:00.000')
Попробуйте это
SELECT DATEADD(MINUTE,HOW_MANY_MINUTES,TO_WHICH_TIME)
Здесь MINUTE
является константой, которая указывает, что er собираются добавлять/вычитать минуты из спецификатора TO_WHICH_TIME
. HOW_MANY_MINUTES
- это интервал, по которому нам нужно добавить минуты, если он указан отрицательный, время будет вычтено, иначе будет добавлен спецификатор TO_WHICH_TIME
, а TO_WHICH_TIME
- это время, в которое вы добавляете MINUTE
.
Надеюсь, что это поможет.
Или попробуйте альтернативный метод с использованием типа данных времени:
DECLARE @MyTime TIME = '03:30:00', @MyDay DATETIME = CAST(GETDATE() AS DATE)
SELECT @[email protected]
Вы можете сделать:
SELECT GETDATE()+'03:30:00'
Следующее прост и работает на SQL Server 2008 (SP3) и вверх:
PRINT @@VERSION
PRINT GETDATE()
PRINT GETDATE() + '01:00:00'
PRINT CONVERT(datetime,FLOOR(CONVERT(float,GETDATE()))) + '01:00:00'
С выходом:
Microsoft SQL Server 2008 (SP3) - 10.0.5500.0 (X64)
Mar 15 2017 6:17PM
Mar 15 2017 7:17PM
Mar 15 2017 1:00AM
Время начала дня: SELECT DATEADD(day, DATEDIFF(day, 0, GETDATE()), '00:00:00')
Время окончания дня: SELECT DATEADD(day, DATEDIFF(day, 0, GETDATE()), '23:59:59')