Подтвердить что ты не робот

Sql - начало часа, месяца и т.д.

Я знаю, как получить в SQL (SQL Server) текущую дату, но с началом дня:

select dateadd(DAY, datediff(day, 0, getdate()),0) 
(result:2009-09-17 00:00:00.000)

Мне нужно, чтобы получить (в SQL) текущую дату с началом этого часа. Например: 2009-09-17 17:00:00 (меня не интересует точный формат)

и Мне нужно, чтобы получить текущую дату, но с началом этого месяца: Например: 2009-09-01 00: 00: 00.000 (меня не интересует точный формат)

Вы можете мне помочь? Спасибо заранее

4b9b3361

Ответ 1

Просто адаптируйте текущий код начала дня!

Все, что вам нужно - это начало месяца, начало часа. Его точно так же...

select dateadd(month, datediff(month, 0, getdate()),0) 

select dateadd(hour, datediff(hour, 0, getdate()),0)

Ответ 2

Попробуйте следующее:

CAST(CAST(SYSDATETIME() AS DATE) AS DATETIME)

Ответ 3

Попробуйте это

select DATEADD(hh,17,dateadd(DAY, datediff(day, 0, getdate()),0))

SELECT CAST('01 ' + CAST(DATENAME(MM, getdate()) AS VARCHAR(15)) + CAST(DATEPART(yyyy, GETDATE()) AS VARCHAR(5)) AS DATETIME)

Ответ 4

Или вы можете попробовать это

В течение дня: select CONVERT( datetime, convert( varchar(8), getdate(), 112))

В течение месяца: select CONVERT( datetime, convert( varchar(6), getdate(), 112)+ '01')

За год: select CONVERT( datetime, convert( varchar(4), getdate(), 112)+ '0101')

Ответ 5

Самый короткий из них: CAST(CURRENT_TIMESTAMP AS DATE)