Personnellement, j'utilise presque toujours des fonctions définies par l'utilisateur dans le cas de SQL Server 2005 (ou version inférieure), cependant, il convient de noter qu'il existe des inconvénients spécifiques à l'utilisation des FDU, en particulier si vous les appliquez aux clauses WHERE (voir ci-dessous et commentaires sur cette réponse pour plus de détails). Si vous utilisez SQL Server 2008 (ou supérieur) - voir ci-dessous.
En fait, pour la plupart des bases de données que je crée, j'ajoute ces UDF juste au début car je sais qu'il y a 99% de chances que j'en ai besoin tôt ou tard.
J'en crée un pour "date seulement" et "heure seulement" (bien que celui "date seulement" soit de loin le plus utilisé des deux).
Voici quelques liens vers une variété d'UDF liés à la date:
Fonctions essentielles de date, d'heure et de date et heure de SQL Server Fonction
Get Date Only
Ce dernier lien montre pas moins de 3 façons différentes d'obtenir la date seulement une partie d'un champ datetime et mentionne certains avantages et inconvénients de chaque approche.
Si vous utilisez un UDF, il convient de noter que vous devez essayer d'éviter d'utiliser l'UDF dans le cadre d'une clause WHERE dans une requête, car cela entravera considérablement les performances de la requête. La raison principale en est que l'utilisation d'une FDU dans une clause WHERE rend cette clause non-sargable , ce qui signifie que SQL Server ne peut plus utiliser d'index avec cette clause afin d'améliorer la vitesse d'exécution des requêtes. En référence à ma propre utilisation des UDF, j'utiliserai fréquemment la colonne de date "brute" dans la clause WHERE, mais j'appliquerai l'UDF à la colonne SELECTed. De cette façon, l'UDF est uniquement appliqué à l'ensemble de résultats filtré et non à chaque ligne du tableau dans le cadre du filtre.
Bien sûr, la meilleure approche absolue pour cela consiste à utiliser SQL Server 2008 (ou supérieur) et à séparer vos dates et heures , car le moteur de base de données SQL Server fournit alors nativement les composants individuels de date et d'heure, et peut les interroger efficacement indépendamment sans avoir besoin d'un UDF ou d'un autre mécanisme pour extraire la partie date ou heure d'un type composite datetime.