it-swarm.com.de

Wie bekomme ich das erste und letzte Datum des laufenden Jahres?

Wie kann ich mit SQL Server 2000 das erste und letzte Datum des aktuellen Jahres erhalten?

Erwartete Ausgabe:

01/01/2012 und 31/12/2012

91
Gopal
SELECT
   DATEADD(yy, DATEDIFF(yy, 0, GETDATE()), 0) AS StartOfYear,
   DATEADD(yy, DATEDIFF(yy, 0, GETDATE()) + 1, -1) AS EndOfYear

Die obige Abfrage gibt einen Datumszeitwert für Mitternacht Anfang 31. Dezember an. Dies ist etwa 24 Stunden vor dem letzten Moment des Jahres. Wenn Sie die Zeit berücksichtigen möchten, die am 31. Dezember eintreten könnte, sollten Sie sie mit dem ersten Jahr des nächsten Jahres vergleichen, und zwar mit einem <-Vergleich. Oder Sie können mit den letzten Millisekunden des aktuellen Jahres vergleichen, was jedoch immer noch eine Lücke hinterlässt, wenn Sie etwas anderes als DATETIME (wie DATETIME2) verwenden:

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

Technische Details

Dies funktioniert, indem Sie die Anzahl der Jahre seit 1900 mit DATEDIFF(yy, 0, GETDATE()) herausfinden und diese dann zu einem Datum von Null = 1. Januar 1900 hinzufügen. Dies kann geändert werden, um für ein beliebiges Datum zu arbeiten, indem Sie den GETDATE()-Teil oder ein beliebiges Jahr durch Ersetzen des DATEDIFF(...) Funktion mit "Year - 1900."

 SELECT
   DATEADD(yy, DATEDIFF(yy, 0, '20150301'), 0) AS StartOfYearForMarch2015,
   DATEADD(yy, 2015 - 1900, 0) AS StartOfYearFor2015
205
Jamie F

Sie können das aktuelle Jahr mit der Funktion DATEPART vom aktuellen Datum abrufen, das Sie mit getUTCDate() erhalten. 

SELECT 
    '01/01/' + CONVERT(VARCHAR(4), DATEPART(yy, getUTCDate())), 
    '31/12/' + CONVERT(VARCHAR(4), DATEPART(yy, getUTCDate()))
10
Vikdor

einfach schreiben: -

select convert (date,DATEADD(YEAR,DATEDIFF(YEAR,0,GETDATE()),0))

startdatum des Jahres.

select convert (date,DATEADD(YEAR, DATEDIFF(YEAR,0,GETDATE()) + 1, -1))  
6
Pradeep atkari

Jedes Jahr hat das 1. Datum als Erstes Datum und 31 als letztes Datum, was Sie tun müssen, wenn Sie das Jahr nur an diesen Tag und diesen Monat anhängen, zum Beispiel:

 SELECT '01/01/'+cast(year(getdate()) as varchar(4)) as [First Day],
 '12/31/'+cast(year(getdate()) as varchar(4)) as [Last Day]
3
Rahul Tripathi

Um den ersten und den letzten Tag des Jahres zu erhalten, kann die Funktion CONCAT verwendet werden. Der resultierende Wert kann in einen beliebigen Typ umgewandelt werden.

CONCAT(YEAR(Getdate()),'-01-01') FirstOfYear,
CONCAT(YEAR(GETDATE()),'-12-31') LastOfYear
1
Gayle

Für das Startdatum des laufenden Jahres:

SELECT DATEADD(DD,-DATEPART(DY,GETDATE())+1,GETDATE())

Für das Enddatum des laufenden Jahres:

SELECT DATEADD(DD,-1,DATEADD(YY,DATEDIFF(YY,0,GETDATE())+1,0))
1
DHANA LAKSHMI

Hier ist ein ziemlich einfacher Weg.

SELECT DATEFROMPARTS(YEAR(GETDATE()), 1, 1) AS 'First Day of Current Year';
SELECT DATEFROMPARTS(YEAR(GETDATE()), 12, 31) AS 'End of Current Year';

Es ist nicht sexy, aber es funktioniert. 

1
Aubrey Love

In Microsoft SQL Server (T-SQL) kann dies wie folgt durchgeführt werden

--beginning of year
select '01/01/' + LTRIM(STR(YEAR(CURRENT_TIMESTAMP)))

--end of year
select '12/31/' + LTRIM(STR(YEAR(CURRENT_TIMESTAMP)))

CURRENT_TIMESTAMP - gibt das SQL Server-Datum zum Zeitpunkt der Ausführung der Abfrage zurück.

YEAR- erhält den Jahresteil des aktuellen Zeitstempels. 

STR,LTRIM- Diese beiden Funktionen werden angewendet, um diese in einen Varchar umzuwandeln, der mit unserem gewünschten Präfix kombiniert werden kann (in diesem Fall ist es entweder das erste Datum des Jahres oder das letzte Datum des Jahres). Aus welchem ​​Grund auch immer, das von der FunktionYEARerzeugte Ergebnis enthält Leerzeichen. Um sie zu beheben, benutzen wir dieLTRIM- Funktion, die links getrimmt ist. 

0
Soundararajan
select to_date(substr(sysdate,1, 4) || '01/01'), to_date(substr(sysdate,1, 4) || '12/31') 
from dual
0
R-Dubz

Es sieht so aus Sie sind daran interessiert, eine Operation für ein bestimmtes Jahr durchzuführen. Wenn dies tatsächlich der Fall ist, würde ich empfehlen, die Funktion YEAR () folgendermaßen zu verwenden:

SELECT * FROM `table` WHERE YEAR(date_column) = '2012';

Dasselbe gilt für DAY () und MONTH () . Sie sind auch für MySQL/MariaDB-Varianten verfügbar und wurden in SQL Server 2008 (also nicht für bestimmte 2000) eingeführt.

0
chjortlund
SELECT DATEADD(DD,-DATEPART(DY,GETDATE())+1,GETDATE())
0
DHANA LAKSHMI

Schauen Sie sich dieses an:

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
NeverHopeless
print Cast('1/1/' + cast(datepart(yyyy, getdate()) as nvarchar(4)) as date)
0
zadeveloper

Ein anderer Weg: (seit SQL Server 2012)

SELECT
    DATEFROMPARTS(YEAR(GETDATE()), 1, 1) FirstDay,
    DATEFROMPARTS(YEAR(GETDATE()),12,31) LastDay
0
EstevaoLuis