Bonjour,
Nous devons stocker une date sous le format: 20151223141515 => AnneeMoisJourHeureMinuteSeconde
Quel type de champs pour ça? BIGINT? CHAR? ou existe-il un champ date qui supporte ce format?
Merci d'avance
Bonjour,
Nous devons stocker une date sous le format: 20151223141515 => AnneeMoisJourHeureMinuteSeconde
Quel type de champs pour ça? BIGINT? CHAR? ou existe-il un champ date qui supporte ce format?
Merci d'avance
merci de lire l'article proposé par SQLPRO http://sqlpro.developpez.com/cours/sqlaz/erreurs/#L7
Code : Sélectionner tout - Visualiser dans une fenêtre à part select convert(varchar,getdate(),112)+replace(convert(varchar,getdate(),108),':','')
En faite, comme ça j'aurais dit l'un ou au l'autre mais ça dépend vraiment de la raison de ce format. Si vous êtes pas obligé d'utiliser ce format je vous conseil fortement d'utiliser le format datetime comme dans la doc de SQLPro proposé ci-dessus. Dans le cas contraire si c'est imposé pour x raison je serais partisan du bigint car sur 8 octets.
Votre problème n'est pas le stockage.
Pour vous, le problème, c'est de l'affichage.
Stocker ça en DATETIME et faites votre fonction pour afficher ça comme vous le voulez.
Sinon, si vous stockez ça dans un VARCHAR, vous allez vous amuser à réinventer la roue, genre la différence entre deux dates ou l'ajout d'un jour...
Bonjour,
Merci pour vos réponses.
Je reçois cette valeur comme donnée, donc oui je dois la convertir en DATETIME pour la stocker.
J'essaye de la convertir:
select CONVERT (datetime,'20151228') => Fonctionne
Mais quand je rajoute heure, minutes, secondes => select CONVERT (datetime,'20151228084523') => ça renvoie une erreur => Conversion failed when converting date and/or time from character string.
Une idée pour intégrer l'heure?
Merci
la première méthode
deuxième méthode a partir de sql 2012
Code : Sélectionner tout - Visualiser dans une fenêtre à part select convert(varchar,getdate(),112)+replace(convert(varchar,getdate(),108),':','')
Code : Sélectionner tout - Visualiser dans une fenêtre à part SELECT format(getdate(),'yyyyMMddHHmmss')
Pour transformer une chaine de caractère de requête SQL en type de données DATETIME il faut utiliser l'un des deux format ISO :
1) pour les types DATETIME ou SMALLDATETIME (ces deux types étant déconseillé car obsolète), format ISO court : AAAAMMJJ HH:MM:SS.NNN
2) pour les types DATETIME2 ou DATETIMEOFFSET, format ISO long : AAAA-MM-JJ HH:MM:SS[.n[n[n[n[n[n[n]]]]]]]
A +
Frédéric Brouard - SQLpro - ARCHITECTE DE DONNÉES - expert SGBDR et langage SQL
Le site sur les SGBD relationnels et le langage SQL: http://sqlpro.developpez.com/
Blog SQL, SQL Server, SGBDR : http://blog.developpez.com/sqlpro
Expert Microsoft SQL Server - M.V.P. (Most valuable Professional) MS Corp.
Entreprise SQL SPOT : modélisation, conseils, audit, optimisation, formation...
* * * * * Expertise SQL Server : http://mssqlserver.fr/ * * * * *
Partager