sql - начало часа, месяца и т. д. - PullRequest
24 голосов
/ 17 сентября 2009

Я знаю, как получить в 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 (точный формат меня не интересует)

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

Ответы [ 5 ]

50 голосов
/ 17 сентября 2009

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

Все, что вы хотите, это начало месяца, начало часа. Это точно так же ...

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

select dateadd(hour, datediff(hour, 0, getdate()),0)
6 голосов
/ 25 июня 2014

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

CAST(CAST(SYSDATETIME() AS DATE) AS DATETIME)
5 голосов
/ 14 сентября 2017

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

2 голосов
/ 30 мая 2014

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

Для дня: 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')

2 голосов
/ 17 сентября 2009

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

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)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...