2009-09-17 10 views
21

wiem jak dostać się w SQL (SQL Server) z bieżącą datą, ale z początku dnia:sql - początek godzina, miesiąc itd

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

muszę dostać (w SQL) bieżąca data z początkiem tej godziny. Na przykład: 2009-09-17 17:00:00 (Nie dbam o dokładny format)

i muszę uzyskać bieżącą datę, ale z początku tego miesiąca: Na przykład : 2009-09-01 00: 00: 00.000 (nie interesuje mnie dokładny format)

Czy możesz mi pomóc? Dzięki z góry

Odpowiedz

40

Wystarczy dostosować swój aktualny początek kodu dzień!

Wszystko czego potrzebujesz to początek miesiąca, początek godziny. Jest tak samo ...

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

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

DZIĘKI !!! bardzo mi pomogłeś. –

2

Spróbuj

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) 
+0

pierwsza: dzięki. po drugie: wyraźnie określono czas (17 w pierwszym zapytaniu, 01 w drugim zapytaniu). Nie chcę wstawiać tych liczb, potrzebuję aktualnej godziny. bieżący miesiąc. –

+0

Zmień 17 na DATEPART (hh, GETDATE()), która dostanie aktualną godzinę , a 01 na początek miesiąca, czy źle zrozumiałem? –

+0

jesteś mężczyzną –

1

Albo można spróbować to

Na dzień: select CONVERT(datetime, convert(varchar(8), getdate(), 112))

W miesiącu: select CONVERT(datetime, convert(varchar(6), getdate(), 112)+ '01')

Do roku: select CONVERT(datetime, convert(varchar(4), getdate(), 112)+ '0101')

4

Spróbuj tego:

CAST(CAST(SYSDATETIME() AS DATE) AS DATETIME) 
+1

tylko 'CAST (SYSDATETIME() AS DATE)' działa dla mnie – kaybee99

0

Najkrótsza to: CAST(CURRENT_TIMESTAMP AS DATE)