Was ist der effizienteste Weg, um den letzten Tag des vorherigen Quartals zu berechnen?Berechnen Sie den letzten Tag des Quartals
Beispiel: Angesichts des Datums 19.11.2008 möchte ich den 30.9.2008 zurückgeben.
Plattform ist SQL Server
Was ist der effizienteste Weg, um den letzten Tag des vorherigen Quartals zu berechnen?Berechnen Sie den letzten Tag des Quartals
Beispiel: Angesichts des Datums 19.11.2008 möchte ich den 30.9.2008 zurückgeben.
Plattform ist SQL Server
Wenn @Date das Datum in Frage
Select DateAdd(day, -1, dateadd(qq, DateDiff(qq, 0, @Date), 0))
EDIT hat: Danke unten an @strEagle, einfacher noch ist:
Select dateadd(qq, DateDiff(qq, 0, @Date), -1)
Ich dachte in die gleiche Richtung, aber ich wusste nicht über die "qq" Bits. Macht die Dinge viel einfacher ... – TToni
Ich kam auf diese (für alle Monate getestet):
select dateadd(dd,-1,dateadd(qq,datediff(qq,0,'11/19/2008'),0)),
dateadd(dd,-1,dateadd(qq,datediff(qq,0,'10/19/2008'),0)),
dateadd(dd,-1,dateadd(qq,datediff(qq,0,'12/19/2008'),0))
Es könnte die einfachste entpuppen.
Eigentlich einfacher ist:
SELECT DATEADD(qq, DATEDIFF(qq, 0, GETDATE()), -1)
Holen Sie sich das aktuelle Datum
SELECT CONVERT(DATE,GETDATE()) [Current Date]
den ersten Tag des Quartals für das aktuelle Datum das letzte Datum des Quartals für das aktuelle Datum
SELECT CONVERT(DATE, DATEADD(QQ, DATEDIFF(QQ, 0, GETDATE()) ,0)) [Current Quarter 1st Date]
Get
SELECT CONVERT(DATE,DATEADD(d, -1, DATEADD(q, DATEDIFF(q, 0, GETDATE()) +1, 0))) [Current Quarter Last Date]
Get Holen Sie sich das erste Datum des nächsten Quartals für das aktuelle Datum
SELECT CONVERT(DATE, DATEADD(QQ, DATEDIFF(QQ, 0, GETDATE()) +1 ,0)) [Next Quarter 1st Date]
Holen Sie sich das letzte Datum des nächsten Quartals für das aktuelle Datum
SELECT CONVERT(DATE,DATEADD(d, -1, DATEADD(q, DATEDIFF(q, 0, GETDATE()) +2, 0))) [Next Quarter Last Date]
Ich denke, es wäre großartig, wenn Sie erklären könnten, was Sie getan haben. Dann werden mehr Menschen in der Lage sein zu verstehen, was Sie vorgeschlagen haben. – jazzurro
In amazon Rotverschiebung:
Letzter Tag des Vorquartals:
select dateadd(day,-1,DATE_TRUNC('qtr', current_date)) from whatever
Letzter Tag des aktuellen Quartals:
select dateadd(qtr,1,dateadd(day,-1,DATE_TRUNC('qtr', current_date))) from whatever
Die Plattform ist SQL Server. 'DATE_TRUNC' wird nicht unterstützt. – strickt01
convert(varchar, dateadd(dd,-1,dateadd(qq,1,DATEADD(qq, DATEDIFF(qq,0,YOUR_DATE), 0))),112)
Sie können auch 112 Basis dazu weiter unten Liste ändern
SELECT convert(varchar, getdate(), 100) -- mon dd yyyy hh:mmAM (or PM)
-- Oct 2 2008 11:01AM
SELECT convert(varchar, getdate(), 101) -- mm/dd/yyyy - 10/02/2008
SELECT convert(varchar, getdate(), 102) -- yyyy.mm.dd – 2008.10.02
SELECT convert(varchar, getdate(), 103) -- dd/mm/yyyy
SELECT convert(varchar, getdate(), 104) -- dd.mm.yyyy
SELECT convert(varchar, getdate(), 105) -- dd-mm-yyyy
SELECT convert(varchar, getdate(), 106) -- dd mon yyyy
SELECT convert(varchar, getdate(), 107) -- mon dd, yyyy
SELECT convert(varchar, getdate(), 108) -- hh:mm:ss
SELECT convert(varchar, getdate(), 109) -- mon dd yyyy hh:mm:ss:mmmAM (or PM)
-- Oct 2 2008 11:02:44:013AM
SELECT convert(varchar, getdate(), 110) -- mm-dd-yyyy
SELECT convert(varchar, getdate(), 111) -- yyyy/mm/dd
SELECT convert(varchar, getdate(), 112) -- yyyymmdd
SELECT convert(varchar, getdate(), 113) -- dd mon yyyy hh:mm:ss:mmm
-- 02 Oct 2008 11:02:07:577
SELECT convert(varchar, getdate(), 114) -- hh:mm:ss:mmm(24h)
SELECT convert(varchar, getdate(), 120) -- yyyy-mm-dd hh:mm:ss(24h)
SELECT convert(varchar, getdate(), 121) -- yyyy-mm-dd hh:mm:ss.mmm
SELECT convert(varchar, getdate(), 126) -- yyyy-mm-ddThh:mm:ss.mmm
-- 2008-10-02T10:52:47.513
-- SQL create different date styles with t-sql string functions
SELECT replace(convert(varchar, getdate(), 111), '/', ' ') -- yyyy mm dd
SELECT convert(varchar(7), getdate(), 126) -- yyyy-mm
SELECT right(convert(varchar, getdate(), 106), 8) -- mon yyyy
Die Frage bezieht sich nicht auf die Konvertierung in VARCHAR in irgendeiner Weise, nur um ein Datum zu erhalten, das das Ende des Quartals ist. –
Yaya, ich weiß, aber ich denke, jemand wird das gleiche mit mir haben. Sie wollen auch nur das letzte Datum eines Quartals mit JJJJMMT-Format erhalten. Vielen Dank –
Was ist das gewünschte Ergebnis für '2008.09.30'? "30.06.2008"? – TToni
ja, und alle Grenzen zu erfassen: 01.10.2008 sollte 9/30/2008 –