Ich habe eine gespeicherte Prozedur, die einen Monat als int (1-12) und ein Jahr als int akzeptieren muss. Angesichts dieser beiden Werte muss ich den Datumsbereich dieses Monats bestimmen. Also brauche ich eine Datetime-Variable, um den ersten Tag des Monats darzustellen, und eine andere Datetime-Variable, um den letzten Tag des Monats darzustellen. Gibt es eine ziemlich einfache Möglichkeit, diese Informationen zu erhalten?SQL Server 2005 Erste und letzte Datum für einen beliebigen Monat in einem Jahr
Antwort
DECLARE @Month int
DECLARE @Year int
set @Month = 2
set @Year = 2004
select DATEADD(month,@Month-1,DATEADD(year,@Year-1900,0)) /*First*/
select DATEADD(day,-1,DATEADD(month,@Month,DATEADD(year,@Year-1900,0))) /*Last*/
Aber was brauchen Sie als Zeitkomponente für den letzten Tag des Monats? Wenn Ihre Datetimes Zeitkomponenten haben andere als Mitternacht können Sie auch besser dran, nur etwas zu tun, wie
WHERE COL >= DATEADD(month,@Month-1,DATEADD(year,@Year-1900,0))
AND COL < DATEADD(month,@Month,DATEADD(year,@Year-1900,0))
Auf diese Weise wird auch weiterhin Ihr Code arbeiten, wenn Sie schließlich auf SQL Server 2008 und die größeren Präzision Datetime-Datentypen migrieren.
Erster Tag des Monats:SELECT DATEADD(mm, DATEDIFF(mm, 0, GETDATE()), 0)
Letzter Tag des Monats:SELECT DATEADD(ms, -3, DATEADD(mm, DATEDIFF(m, 0, GETDATE()) + 1, 0))
Ersatz ein Datetime-Variablenwert für GETDATE().
Ich habe das vor langer Zeit von this very handy page, die eine ganze Reihe von anderen Datumsberechnungen wie "Montag der aktuellen Woche" und "ersten Montag des Monats" hat.
Das hat funktioniert. Obwohl ich eine andere Antwort wählte, weil ich seine Syntax bevorzugte. Die von Ihnen verlinkte Seite ist eine großartige Informationsquelle. Vielen Dank. – Ristogod
DECLARE @Month int;
DECLARE @Year int;
DECLARE @FirstDayOfMonth DateTime;
DECLARE @LastDayOfMonth DateTime;
SET @Month = 3
SET @Year = 2010
SET @FirstDayOfMonth = CONVERT(datetime, CAST(@Month as varchar) + '/01/' + CAST(@Year as varchar));
SET @LastDayOfMonth = DATEADD(month, 1, CONVERT(datetime, CAST(@Month as varchar)+ '/01/' + CAST(@Year as varchar))) - 1;
Das hat funktioniert. Obwohl ich eine andere Antwort wählte, weil ich die Syntax und die Nichtverwendung der Konvertierung bevorzugte. Vielen Dank. – Ristogod
DECLARE @Month INTEGER
DECLARE @Year INTEGER
SET @Month = 10
SET @Year = 2010
DECLARE @FirstDayOfMonth DATETIME
DECLARE @LastDayOfMonth DATETIME
SET @FirstDayOfMonth = Str(@Year) + RIGHT('0' + Str(@Month), 2) + '01'
SET @LastDayOfMonth = DATEADD(dd, -1, DATEADD(mm, 1, @FirstDayOfMOnth))
SELECT @FirstDayOfMonth, @LastDayOfMonth
Das hat funktioniert. Obwohl ich eine andere Antwort wählte, bevorzugte ich die Syntax und die Nichtbenutzung von Right. Vielen Dank. – Ristogod
Versuchen Sie folgendes:
Declare @month int, @year int;
Declare @first DateTime, @last DateTime;
Set @month=10;
Set @year=2010;
Set @first=CAST(CAST(@year AS varchar) + '-' + CAST(@month AS varchar) + '-' + '1' AS DATETIME);
Set @last=DATEADD(s,-1,DATEADD(mm, DATEDIFF(m,0,@first)+1,0));
SELECT @first,@last;
Das hat funktioniert. Obwohl ich eine andere Antwort wählte, bevorzugte ich die Syntax und die Nichtverwendung von Casting. Vielen Dank. – Ristogod
select [FirstDay Of The Month] as Text ,convert(varchar,dateadd(d,-(day(getdate()-1)),getdate()),106) 'Date'
union all
select [LastDay Of The Month], convert(varchar,dateadd(d,-day(getdate()),dateadd(m,1,getdate())),106)
Aktueller Monat letzte Datum:
select dateadd(dd,-day(dateadd(mm,1,getdate())),dateadd(mm,1,getdate()))
Aktueller Monat 1. Datum:
select dateadd(dd,-day(getdate())+1,getdate())
DECLARE @Month int = 3, @Year int = 2016
DECLARE @StartDate DATETIME
DECLARE @EndDate DATETIME
-- First date of month
SET @StartDate = DATEADD(MONTH, @Month-1, DATEADD(YEAR, @Year-1900, 0));
-- Last date of month
SET @EndDate = DATEADD(SS, -1, DATEADD(MONTH, @Month, DATEADD(YEAR, @Year-1900, 0)))
Dies wird erstes Datum und letztes Datum mit Zeitkomponente zurückgeben.
- 1. SQL Sortierung Datum nach Jahr und Monat
- 2. Datum in Monat, Tag und Jahr umwandeln?
- 3. TSQL Monat und Jahr zu Datum Umwandlung
- 4. Datetime Format für einen Monat und Jahr
- 5. Oracle Gruppe von Datum, Monat und Jahr
- 6. Aktueller Monat und Jahr in SQL Server 2008 r2
- 7. Mysql Daten für Monat und Jahr
- 8. erhalten Datum aller Samstage in einem bestimmten Jahr - SQL Server
- 9. So vergleichen Sie Datum (Jahr, Monat) mit Datum (Tag, Monat, Jahr)
- 10. SQL Query Monat/Jahr
- 11. Sortierung MySQL Datum, Tag/Monat/Jahr Format
- 12. SQL-Tabelle mit Tag, Datum, Monat, Jahr, Periode, Wochennummer? (SQL)
- 13. Schnellste Auswahl nach Jahr-Monat?
- 14. SPARK SQL: Get Monat Woche und Jahr
- 15. Wie kann ich das erste und letzte Datum in einem Monat mit PHP finden?
- 16. Format Datum nur für Monat und Jahr - "MMM-yyyy"
- 17. Extrahieren Monat und Jahr von Datum in R
- 18. Monat und Jahr von Datum generieren und automatisch in Tabelle speichern
- 19. Gruppe Datum im Monat und Jahr php Datum
- 20. SQL-Abfrage Sortierung Jahr/Monat
- 21. Gruppenabfrageergebnisse nach Monat und Jahr in postgresql
- 22. Anzeige Jahr, Monat und Datum in Folge auf DateTimePicker iOS
- 23. Fremdschlüssel und Indizes für SQL Server 2005
- 24. SQL Server 2005 und Oder
- 25. Wie bekomme ich den letzten Monat Jahr und jetzt Monat Jahr in Sql
- 26. SQL Server 2005-Failovercluster mit einem Server?
- 27. Monat und Jahr Filter für Post Kategorien
- 28. SQL Server 2005 Datumslokalisierung
- 29. Wie erstelle ich ein Datum aus nur einem Monat und einem Jahr in Java?
- 30. SQL Server 2005 - DATUM ADD UND GETDATE ARBEITET NICHT
Danke. Das hat funktioniert. Ich zog diese Antwort vor, weil sie am saubersten zu sein scheint. – Ristogod