2) le forçage d'un format
Le flag de session DATEFORMAT permet de forcer l'ordre des parties de la date dans les correspondances littérales vers DATETIME. Il s'utilise comme suit :
SET DATEFORMAT MYD
SELECT CAST('03/1987/21' AS DATETIME)
Dans cet exemple on permet d'utiliser un format de date avec le mois en premier suivi de l'année et se terminant par le jour, d'où le paramètre MYD. Bien entendu on peut utiliser MDY, YMD, YDM, DYM, DMY...
Comme tout paramètre de session, DATEFORMAT est valable tant que vous ne modifiez pas son état et que la connexion existe. Aussi est-ce une bonne chose que de commencer toute session dans une application (exécutable comme ASP par exemple) par définir la valeur de ce paramètre.
3) le format universel
Mais il existe un format très particulier. Le format ISO court d'encodage de date passe outre le flag DATEFORMAT et les paramètres régionaux. Quel est ce format ? Tout simplement AAAAMMJJ sans aucun séparateur d'aucune sorte...
Dernière petite remarque : si vous utilisez une année à deux chiffres, alors l'année pivot par défaut est 50. En dessous de 50 vous êtes au 21e siècle et vos années commencent par 20, à 50 et au dessus vous être au 20e siècle et vos années sont complétées par 19. Exemple :
SELECT CAST('21/04/49' AS DATETIME), CAST('21/04/50' AS DATETIME)
Vous pouvez d'ailleurs régler ce paramètre au niveau du serveur :
sp_configure 'two digit year cutoff', '2000'
Partager