Duplicata possible:
Créer une date avec T-SQL
J'ai un tableau de données qui stocke chaque année, mois et valeur journalière en pouces:
year | month | day
2009 | 1 | 1
2008 | 12 | 2
2007 | 5 | 5
J'ai besoin de le convertir en valeur datetime, car je dois l'utiliser dans un datetime entre les opérations. Comment pourrais-je faire ça?
Afin d'être indépendant des paramètres de langue et de paramètres régionaux, vous devez utiliser le format ISO 8601 YYYYMMDD
- cela fonctionnera sur tout système SQL Server avec n'importe quelle langue et paramètre régional en vigueur:
SELECT
CAST(
CAST(year AS VARCHAR(4)) +
RIGHT('0' + CAST(month AS VARCHAR(2)), 2) +
RIGHT('0' + CAST(day AS VARCHAR(2)), 2)
AS DATETIME)
Solution de datetime pure, ne dépend pas de la langue ou du DATEFORMAT, pas de chaînes
SELECT
DATEADD(year, [year]-1900, DATEADD(month, [month]-1, DATEADD(day, [day]-1, 0)))
FROM
dbo.Table
Vous pouvez convertir vos valeurs en un datetime "décimal" et le convertir ensuite en une colonne datetime réelle:
select cast(rtrim(year *10000+ month *100+ day) as datetime) as Date from DateTable
Voir ici également pour plus d'informations.
SELECT CAST(CAST(year AS varchar) + '/' + CAST(month AS varchar) + '/' + CAST(day as varchar) AS datetime) AS MyDateTime
FROM table