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

Author: TylerH, 2012-11-18

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
 193
Author: Jamie F,
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()))
 8
Author: Vikdor,
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))  
 6
Author: Pradeep atkari,
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]
 4
Author: Rahul Tripathi,
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))
 1
Author: DHANA LAKSHMI,
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
 1
Author: Gayle,
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
 0
Author: NeverHopeless,
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
 0
Author: R-Dubz,
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())
 0
Author: DHANA LAKSHMI,
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)
 0
Author: zadeveloper,
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).

 0
Author: chjortlund,
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.

 0
Author: Soundararajan,
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
 0
Author: EstevaoLuis,
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')
 -1
Author: Ivan,
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
 -3
Author: Lalmuni Singh,
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