Jak uzyskać pierwszą i ostatnią datę bieżącego roku?
Używając SQL Server 2000, Jak mogę uzyskać pierwszą i ostatnią datę bieżącego roku?
Oczekiwany Wynik:
01/01/2012
i 31/12/2012
15 answers
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ść datetime dla północy na początku grudnia 31. To o 24 godziny mniej niż ostatnia chwila w roku. Jeśli chcesz uwzględnić czas, który może nastąpić 31 grudnia, powinieneś porównać do pierwszego z następnego roku, za pomocą porównania <
. Możesz też porównać do kilku ostatnich milisekund bieżącego roku, ale nadal pozostawia to lukę, jeśli używasz czegoś innego niż DATETIME (np.]}
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
Tech Szczegóły
Działa to poprzez obliczenie liczby lat od 1900 z DATEDIFF(yy, 0, GETDATE())
, a następnie dodanie jej do daty zero = 1 stycznia 1900. Można to zmienić, aby działać dla dowolnej daty, zastępując część GETDATE()
lub dowolny rok, zastępując funkcję DATEDIFF(...)
funkcją "rok - 1900."
SELECT
DATEADD(yy, DATEDIFF(yy, 0, '20150301'), 0) AS StartOfYearForMarch2015,
DATEADD(yy, 2015 - 1900, 0) AS StartOfYearFor2015
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-11-07 15:48:06
Możesz uzyskać bieżący rok za pomocą funkcji DATEPART
, od bieżącej daty uzyskanej za pomocą getUTCDate()
SELECT
'01/01/' + CONVERT(VARCHAR(4), DATEPART(yy, getUTCDate())),
'31/12/' + CONVERT(VARCHAR(4), DATEPART(yy, getUTCDate()))
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-11-18 04:15:45
Po prostu napisz:-
select convert (date,DATEADD(YEAR,DATEDIFF(YEAR,0,GETDATE()),0))
Data rozpoczęcia roku.
select convert (date,DATEADD(YEAR, DATEDIFF(YEAR,0,GETDATE()) + 1, -1))
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-11-11 10:19:25
Każdy rok ma 1 st jako pierwszą datę i 31 jako ostatnią datę co musisz zrobić, to tylko dołączyć rok do tego dnia i miesiąca na przykład:-
SELECT '01/01/'+cast(year(getdate()) as varchar(4)) as [First Day],
'12/31/'+cast(year(getdate()) as varchar(4)) as [Last Day]
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-11-18 09:22:32
Dla daty rozpoczęcia bieżącego roku:
SELECT DATEADD(DD,-DATEPART(DY,GETDATE())+1,GETDATE())
Dla daty końca bieżącego roku:
SELECT DATEADD(DD,-1,DATEADD(YY,DATEDIFF(YY,0,GETDATE())+1,0))
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-02-13 14:50:43
Aby uzyskać pierwszy i ostatni dzień roku, można użyć funkcji CONCAT
. Otrzymaną wartość można oddać do dowolnego typu.
CONCAT(YEAR(Getdate()),'-01-01') FirstOfYear,
CONCAT(YEAR(GETDATE()),'-12-31') LastOfYear
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-05-11 14:17:20
Zobacz to:
select convert(varchar(12),(DateAdd(month,(Month(getdate())-1) * -1, DateAdd(Day,(Day(getdate())-1) * -1,getdate()))),103) as StartYear,
convert(varchar(12),DateAdd(month,12 - Month(getdate()), DateAdd(Day,(31 - Day(getdate())),getdate())),103) as EndYear
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-11-18 09:03:31
select to_date(substr(sysdate,1, 4) || '01/01'), to_date(substr(sysdate,1, 4) || '12/31')
from dual
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-08-25 20:45:44
SELECT DATEADD(DD,-DATEPART(DY,GETDATE())+1,GETDATE())
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-02-13 13:43:17
print Cast('1/1/' + cast(datepart(yyyy, getdate()) as nvarchar(4)) as date)
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-06-01 20:13:06
Wygląda na to, że jesteś interesujący w wykonywaniu operacji wszystko dla danego roku, jeśli tak rzeczywiście jest, polecam użyć funkcji YEAR () w następujący sposób:
SELECT * FROM `table` WHERE YEAR(date_column) = '2012';
To samo dotyczy DAY () i MONTH () . Są one również dostępne dla wariantów MySQL / MariaDB i zostały wprowadzone w SQL Server 2008 (a więc nie dla konkretnego 2000).
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-04-11 12:38:42
W Microsoft SQL Server (T-SQL) można to zrobić w następujący sposób
--beginning of year
select '01/01/' + LTRIM(STR(YEAR(CURRENT_TIMESTAMP)))
--end of year
select '12/31/' + LTRIM(STR(YEAR(CURRENT_TIMESTAMP)))
CURRENT_TIMESTAMP - zwraca datę serwera sql w momencie wykonania zapytania.
Rok - pobiera część roku bieżącego znacznika czasu.
STR , LTRIM - te dwie funkcje są stosowane tak, że możemy przekształcić to w varchar, który może być połączony z naszym pożądanym prefiksem (w tym przypadku jest to albo pierwsza data roku, albo ostatnia data roku). Z jakiegokolwiek powodu wynik generowany przez funkcję YEAR ma przestrzenie prefiksowe. Aby je naprawić, używamy funkcji LTRIM , która jest lewy trim.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-04-29 11:22:01
Inny sposób: (od SQL Server 2012)
SELECT
DATEFROMPARTS(YEAR(GETDATE()), 1, 1) FirstDay,
DATEFROMPARTS(YEAR(GETDATE()),12,31) LastDay
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-06-12 09:38:08
Spróbuj tego:
DATE_FORMAT(NOW(),'01/01/%Y')
DATE_FORMAT(NOW(),'31/12/%Y')
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-02-13 13:51:10
---Lalmuni Demos - - -
create table Users
(
userid int,date_of_birth date
)
- - - Wstaw wartości - - -
insert into Users values(4,'9/10/1991')
select DATEDIFF(year,date_of_birth, getdate()) - (CASE WHEN (DATEADD(year, DATEDIFF(year,date_of_birth, getdate()),date_of_birth)) > getdate() THEN 1 ELSE 0 END) as Years,
MONTH(getdate() - (DATEADD(year, DATEDIFF(year, date_of_birth, getdate()), date_of_birth))) - 1 as Months,
DAY(getdate() - (DATEADD(year, DATEDIFF(year,date_of_birth, getdate()), date_of_birth))) - 1 as Days,
from users
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-03-19 12:07:13