Korzystając z programu SQL Server 2000, jak mogę uzyskać pierwszą i ostatnią datę bieżącego roku?
Oczekiwany wynik:
01/01/2012
i 31/12/2012
źródło
Korzystając z programu SQL Server 2000, jak mogę uzyskać pierwszą i ostatnią datę bieżącego roku?
Oczekiwany wynik:
01/01/2012
i 31/12/2012
SELECT
DATEADD(yy, DATEDIFF(yy, 0, GETDATE()), 0) AS StartOfYear,
DATEADD(yy, DATEDIFF(yy, 0, GETDATE()) + 1, -1) AS EndOfYear
Powyższe zapytanie podaje wartość daty i godziny dla północy na początku 31 grudnia. To około 24 godziny przed ostatnią chwilą roku. Jeśli chcesz uwzględnić czas, który może mieć miejsce 31 grudnia, powinieneś porównać go z pierwszym dniem następnego roku, <
porównując. Lub możesz porównać z kilkoma ostatnimi milisekundami bieżącego roku, ale nadal pozostawia to lukę, jeśli używasz czegoś innego niż DATETIME (na przykład DATETIME2):
SELECT
DATEADD(yy, DATEDIFF(yy, 0, GETDATE()), 0) AS StartOfYear,
DATEADD(yy, DATEDIFF(yy, 0, GETDATE()) + 1, -1) AS LastDayOfYear,
DATEADD(yy, DATEDIFF(yy, 0, GETDATE()) + 1, 0) AS FirstOfNextYear,
DATEADD(ms, -3, DATEADD(yy, DATEDIFF(yy, 0, GETDATE()) + 1, 0)) AS LastTimeOfYear
Szczegóły techniczne
Działa to poprzez obliczenie liczby lat od 1900 r., DATEDIFF(yy, 0, GETDATE())
A następnie dodanie jej do daty zero = 1 stycznia 1900 r. Można to zmienić, aby działało dla dowolnej daty, zastępując GETDATE()
część lub dowolny rok, zastępując DATEDIFF(...)
funkcję „Rok - 1900”.
SELECT
DATEADD(yy, DATEDIFF(yy, 0, '20150301'), 0) AS StartOfYearForMarch2015,
DATEADD(yy, 2015 - 1900, 0) AS StartOfYearFor2015
Oto dość prosty sposób;
SELECT DATEFROMPARTS(YEAR(GETDATE()), 1, 1) AS 'First Day of Current Year';
SELECT DATEFROMPARTS(YEAR(GETDATE()), 12, 31) AS 'End of Current Year';
To nie jest seksowne, ale działa.
Możesz uzyskać bieżący rok za pomocą
DATEPART
funkcji, od aktualnej daty uzyskanej za pomocągetUTCDate()
źródło
DATETIME
zamiast ciągu i oczywiście może to nie odpowiadać oczekiwanemu wynikowi zgodnie z pytaniem.yyyyMMdd
jest jednoznaczne.po prostu napisz: -
data rozpoczęcia roku.
źródło
Każdy rok ma pierwszą datę jako pierwszą i 31 jako ostatnią datę, co musisz zrobić, to tylko dołączyć rok do tego dnia i miesiąca, na przykład: -
źródło
Aby uzyskać pierwszy i ostatni dzień roku, można skorzystać z
CONCAT
funkcji. Wynikowa wartość może być rzutowana na dowolny typ.źródło
Data rozpoczęcia bieżącego roku:
Na koniec bieżącego roku:
źródło
Inny sposób: (od SQL Server 2012)
źródło
Sprawdź ten:
źródło
źródło
źródło
Wygląda na to, że jesteś zainteresowany wykonaniem operacji wszystkiego na dany rok, jeśli tak jest, polecałbym użycie funkcji ROK () w następujący sposób:
To samo dotyczy DAY () i MONTH () . Są również dostępne dla wariantów MySQL / MariaDB i zostały wprowadzone w SQL Server 2008 (a więc nie dla określonego 2000).
źródło
źródło
W Microsoft SQL Server (T-SQL) można to zrobić w następujący sposób
CURRENT_TIMESTAMP - zwraca datę serwera sql w momencie wykonania zapytania.
YEAR - pobiera część roku z bieżącego znacznika czasu.
STR , LTRIM - te dwie funkcje są stosowane, abyśmy mogli przekształcić to w varchar, który można połączyć z naszym żądanym przedrostkiem (w tym przypadku jest to pierwsza data roku lub ostatnia data roku). Z jakiegoś powodu wynik wygenerowany przez funkcję YEAR ma spacje przedrostków. Aby je naprawić, używamy funkcji LTRIM, która jest lewym przycięciem.
źródło
Jeśli dojdzie do 1 stycznia, może to być jeszcze data z zeszłego roku.
źródło
Spróbuj tego:
źródło
Msg 195, Level 15, State 10, Line 1 'NOW' is not a recognized function name.
--- Dema Lalmuni ---
--- wstaw wartości ---
źródło