Ich habe ein Datetime-Feld namens DateFinished. Ich muss alle Datensätze abrufen können, in denen DateFinished innerhalb des aktuellen Monats/Jahres liegt.TSQL alle Datensätze im aktuellen Monat/Jahr abrufen
6
A
Antwort
15
Wenn Sie nur eine kleine Anzahl von Zeilen haben, wird dies tun, um alle Zeilen zu erhalten, in denen DateFinished
in diesem Monat dieses Jahres ist.
SELECT *
FROM MyTable
WHERE Year(DateFinished) = Year(CURRENT_TIMESTAMP)
AND Month(DateFinished) = Month(CURRENT_TIMESTAMP)
Dies könnte ziemlich langsam über eine große Anzahl von Zeilen bekommen obwohl - in diesem Fall mit DateAdd
, DatePart
und BETWEEN
ist wahrscheinlich besser geeignet, und profitieren Sie von Indizes nehmen kann (ich habe keine Zeit, ein schreiben antwort mit denen gerade jetzt!)
9
Nur als Alternative - das sollte einen Index auf DateFinished verwenden.
SELECT *
FROM MyTable
WHERE DateFinished BETWEEN
DATEADD(MONTH, DATEDIFF(MONTH, 0, GETDATE()), 0)
AND
DATEADD(MONTH, DATEDIFF(MONTH, 0, GETDATE()) + 1, 0)
Verwandte Themen
- 1. TSQL: Alle Zeilen für die angegebene ID abrufen
- 2. Liste der Dateien im aktuellen Verzeichnis abrufen
- 3. Aktuellen Funktionsnamen im strikten Modus abrufen
- 4. TSQL: Ranking Datensätze mit verschiedenen Spalten
- 5. TSQL: Letzte Abfragen abrufen Ran
- 6. Aktuellen Methodennamen abrufen
- 7. Abrufen des aktuellen Modulnamens
- 8. TSQL XML-Wert gibt den ersten Wert des Knotens für alle Datensätze zurück
- 9. Wie gelöschte Datensätze abrufen?
- 10. Wie kann ich alle Datensätze aus Cloudkit abrufen
- 11. CloudKit: Alle Datensätze mit einem bestimmten Datensatztyp abrufen?
- 12. Alle Datensätze von Elasticsearch mit Java-API abrufen
- 13. Aktuellen Exchange Server abrufen
- 14. Aktuellen Umgebungsnamen abrufen
- 15. Abrufen der aktuellen Bildnummer
- 16. Aktuellen Sitzungswert in JavaScript abrufen?
- 17. tsql - Selbstreferenz
- 18. Alle entfernten Variablen im Skriptblock abrufen
- 19. Wie zu kombinieren LINQ enthält Abfrage mit Anzahl auf alle Datensätze und Datensätze mit Offset abrufen
- 20. Datensätze aus mehreren Tabellen abrufen
- 21. Rails 3: Aktuellen Namespace abrufen?
- 22. Aktuellen Standort über WLAN abrufen?
- 23. Slack API, aktuellen Standort abrufen
- 24. Python - Pfad der ausgewählten Datei im aktuellen Windows Explorer abrufen
- 25. alle Datensätze auswählen
- 26. Sehen Sie alle Tabellen, alle Datensätze von der Konsole?
- 27. Den aktuellen aktiven Anwendungsnamen abrufen
- 28. Aktuellen ASP.NET-Vertrauensgrad programmgesteuert abrufen
- 29. Tabellenzeilenindex der aktuellen Zeile abrufen
- 30. Aktuellen Tab-Index abrufen vb.net
Ihr Monatsteil ist aus? – Moose
@Moose Danke - wurde noch bearbeitet :-) – Bridge
Das wird funktionieren - aber es wird nicht sehr effizient sein, da die Verwendung von 'YEAR()' oder 'MONTH()' auf Ihrer Spalte grundsätzlich verhindert, dass SQL Server irgendwelche Indizes verwendet. Wenn das OP dies häufig benötigt, kann es nützlich sein, zwei ** berechnete, persistente ** Spalten zu erstellen, die den Monat/das Jahr für jede Zeile enthalten und dann diese abfragen. –