Ich persönlich verwende hierfür fast immer benutzerdefinierte Funktionen, wenn ich mich mit SQL Server 2005 (oder einer niedrigeren Version) befasse. Es sollte jedoch beachtet werden, dass die Verwendung von UDFs bestimmte Nachteile hat, insbesondere wenn sie auf WHERE-Klauseln angewendet werden (siehe unten und die Kommentare zu dieser Antwort für weitere Details). Bei Verwendung von SQL Server 2008 (oder höher) - siehe unten.
Tatsächlich füge ich für die meisten Datenbanken, die ich erstelle, diese UDFs gleich zu Beginn hinzu, da ich weiß, dass die Wahrscheinlichkeit, dass ich sie früher oder später benötige, bei 99% liegt.
Ich erstelle eine für "nur Datum" und "nur Zeit" (obwohl die "nur Datum" bei weitem die am häufigsten verwendete von beiden ist).
Hier sind einige Links zu verschiedenen datumsbezogenen UDFs:
Wichtige SQL Server-Funktionen für Datum, Uhrzeit und Datum / Uhrzeit Funktion " Nur Datum abrufen"
Dieser letzte Link zeigt nicht weniger als drei verschiedene Möglichkeiten, um das Datum nur als Teil eines Datums- / Uhrzeitfelds abzurufen, und nennt einige Vor- und Nachteile der einzelnen Ansätze.
Wenn Sie eine UDF verwenden, sollten Sie beachten, dass Sie versuchen sollten, die Verwendung der UDF als Teil einer WHERE-Klausel in einer Abfrage zu vermeiden, da dies die Leistung der Abfrage erheblich beeinträchtigt. Der Hauptgrund dafür ist, dass die Verwendung einer UDF in einer WHERE-Klausel diese Klausel als nicht sargable darstellt. Dies bedeutet, dass SQL Server keinen Index mehr mit dieser Klausel verwenden kann, um die Geschwindigkeit der Abfrageausführung zu verbessern. In Bezug auf meine eigene Verwendung von UDFs verwende ich häufig die Spalte "Rohdatum" in der WHERE-Klausel, wende die UDF jedoch auf die Spalte SELECTed an. Auf diese Weise wird die UDF nur auf die gefilterte Ergebnismenge und nicht auf jede Zeile der Tabelle als Teil des Filters angewendet.
Natürlich ist der absolute beste ist Ansatz für diesen SQL Server 2008 (oder höher) zu verwenden und Ihre abscheiden Daten und Zeiten , als der Motor SQL Server - Datenbank dann nativ wird die einzelnen Datums- und Zeitkomponenten bereitstellt, und kann effizient Abfrage dieser unabhängig ohne dass eine UDF oder ein anderer Mechanismus erforderlich ist, um entweder den Datums- oder den Uhrzeitteil aus einem zusammengesetzten Datums- / Uhrzeittyp zu extrahieren.