Я использую следующее, чтобы получить 1-й день следующего месяца со временем:
select DATEADD(m, DATEDIFF(m, -1, getdate()), 0)
Но вывод:
2018-12-01 00:00:00.000
И ожидаемый результат:
2018-12-01 11:53:30.677
Я пробовал разные подходы, но не смог получить требуемый результат.Я использую SQL Server 2008.
Вы можете добавить два datetime значения, одно для даты, а другое для времени:
datetime
select DATEADD(month, DATEDIFF(month, -1, getdate()), 0) + cast(cast(getdate() as time) as datetime)
Я предполагаю, что вы хотите значение времени от текущего времени.
Вычтите DAY(@date) - 1 дней из @date, чтобы получить первый день этого месяца, включая время.Затем добавьте один месяц:
DAY(@date) - 1
@date
SELECT DATEADD(MONTH, 1, DATEADD(DAY, -DAY(GETDATE()) + 1, GETDATE())) -- 2018-12-01 04:52:33.403
попробуйте как ниже
select DATEADD(m, DATEDIFF(m, -1, getdate()), 0)+ convert(DATETIME,'11:53:30.677')
в случае текущего времени это будет как ниже
select DATEADD(m, DATEDIFF(m, -1, getdate()), 0)+ convert(datetime, convert(time,getdate()))