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.
Mon avatar ? Ce n'est rien, c'est juste la tête que je fais lorsque je vois un code complètement frappa dingue !...
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/ * * * * *
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 select convert(datetime, stuff(stuff(stuff('20151228132506', 9, 0, ' '), 12, 0, ':'), 15, 0, ':'))
DATETIME2, DATE, DATETIMEOFFSET ont été introduits avec la version 2008 de SQL Server. Le type DATETIME est considéré comme obsolète et doit être remplacé par DATETIME2 depuis la version 2008.
Le problème du DATETIME est qu'il est imprécis et peut conduire à des requêtes donnant des résultats faux. En sus il pose des problèmes d'estimation des cardinalités pour l'établissement des plans de requête et donc conduit à des pertes de performances. Pour ce dernier cas il est cependant possible de remédier en partie en activant l'option DATETIME_CORRELLATION_OPTIMIZATION au niveau d'une base pour rajouter des statistiques spécifiques afin de mieux estimer les jointures lorsque des clefs primaires / clefs étrangères utilisent une colonne de type DATETIME.
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/ * * * * *
Nickel ça fonctionne:
Mon champ Date001 est de type DATETIME2
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 INSERT INTO TestField (Date001) VALUES (convert(datetime, stuff(stuff(stuff('20151228132506', 9, 0, ' '), 12, 0, ':'), 15, 0, ':')))
Merci beaucoup.
@SQLpro: Merci pour l'explication, je savais pas, ce "nouveau" type de champ est que sous Sql Server ou aussi sur Mysql, Postgres?
Merci bien
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/ * * * * *
Merci pour les infos.
Une toute bonne année 2016
La phrase de la documentation sur ce sujet n'est pas claire : elle ne dit pas deprecated comme pour les autres fonctionnalités :Envoyé par SQLPro
Use the time, date, datetime2 and datetimeoffset data types for new work. These types align with the SQL Standard. They are more portable. time, datetime2 and datetimeoffset provide more seconds precision. datetimeoffset provides time zone support for globally deployed applications.
La raison invoquée par Microsoft est l'alignement sur le standard SQL, la portabilité, et une meilleure précision comme tu l'écris.
Cela n'implique pas, je pense, qu'ils ne seront plus supportés dans des prochaines versions de SQL Server; d'ailleurs si c'était le cas, j'entends déjà les hurlements à la mort de nombreux éditeurs ... un peu comme pour les curseurs
@++
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/ * * * * *
Ha je veux bien, mais il faut que tu me dises quoi !
@++
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/ * * * * *
J'avais compris, mais celui qui perd doit quoi à l'autre ?
@++
Une caisse de champagne !
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/ * * * * *
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager