|
Publicité ' | |||||||||||||||||||||||
|
|
#1 |
|
Membre à l'essai
![]() Inscription : avril 2010 Messages : 75 ![]() |
Bonjour,
SVP, quelqu'un saurais comment convertir une chaine '2005-05-22T11:26:32' en date ? J'ai essayé avec convert : select Convert(DateTime, '2007-01-01T12:45:012', 126) mais j'en ressort l'erreur suivante : Échec de la conversion d'une valeur datetime à partir d'une chaîne de caractères. Merci d'avance. |
|
|
00
|
|
|
#2 |
|
Membre Expert
![]() ![]() Inscription : janvier 2010 Messages : 1 084 ![]() |
bonjour,
Heu... peut être en supprimant un des trois chiffres des secondes... |
|
|
00
|
|
|
#3 |
|
Membre Expert
![]() |
Code :
SELECT CAST( '2005-05-22T11:26:32' AS DATETIME)
__________________
Prendre conscience, c'est transformer le voile qui recouvre la lumière en miroir. |
|
|
00
|
|
|
#4 |
|
Membre à l'essai
![]() Inscription : avril 2010 Messages : 75 ![]() |
Hum ....
Je sort... c'était le chiffre de trop qui me bloquait. En revanche, sur une date test 0001-01-01T00:00:00 Code :
SELECT convert(datetime, '0001-01-01T00:00:00', 126) "La conversion d'un type de données CHAR en type DATETIME a donné une valeur hors limite de date et d'heure." Y'aurais t'il un moyen de faire passer une tel date ? Cela me fait de même avec "CAST". |
|
|
00
|
|
|
#5 |
|
Membre Expert
![]() ![]() Inscription : janvier 2010 Messages : 1 084 ![]() |
quelle version de sql server utilisez vous ?
Si vous etes sous 2008, vous pouvez utiliser le type DATETIME2, qui accepte les dates à partir de 0001-01-01, à l'inverse de DATETIME, qui n'accepte que les dates à partir de 1753-01-01 |
|
|
00
|
|
|
#6 |
|
Membre à l'essai
![]() Inscription : avril 2010 Messages : 75 ![]() |
Oui, j'utilise Microsoft sql server 2008 R2 Management Studio, mais il me marque le message d'erreur suivant :
"Le type datetime2 n'est pas un type défini par le système." (tout comme avec les type time, date, datetimeoffset)
|
|
|
00
|
|
|
#7 | |||
|
Membre Expert
![]() ![]() Inscription : janvier 2010 Messages : 1 084 ![]() |
Citation:
Que donne ceci : Code SQL :
|
|||
|
|
00
|
|
|
#8 |
|
Membre Expert
![]() |
Vous utilisez Management studio 2008 mais celà ne prouve pas que votre instance est en version 2008.
Que donne ceci:
__________________
Prendre conscience, c'est transformer le voile qui recouvre la lumière en miroir. |
|
|
00
|
|
|
#9 |
|
Membre à l'essai
![]() Inscription : avril 2010 Messages : 75 ![]() |
Oui effectivement cela me rend :
"Microsoft SQL Server 2005 - 9.00.5057.00 (X64) Mar 25 2011 13:33:31 Copyright (c) 1988-2005 Microsoft Corporation Developer Edition (64-bit) on Windows NT 6.1 (Build 7601: Service Pack 1) " Y'aurais-il un autre moyen de contourner le problème de la date teste ? |
|
|
00
|
|
|
#10 |
![]() ![]() ![]() Nicolas SouquetAdministrateur de base de données Inscription : janvier 2005 Messages : 4 669 ![]() |
Bonjour,
Votre problème n'en est pas un : la chaîne de caractère que vous utilisez pour représenter une date + une heure est au format ISO. Donc la seule chose qui peut fonctionner dans ce cas là est la requête que vous a donné iberserk. Par ailleurs en utilisant ce format, vous êtes presque certain de vous éviter des ennuis de conversion. Maintenant si vous souhaitez vous passer de l'heure (c'est à dire mettre les heures, minutes et secondes à zéro), en reprenant le code d'iberserk : Code :
SELECT CAST(FLOOR(CAST(CAST( '2005-05-22T11:26:32' AS datetime) AS float)) AS datetime) Quel est le but de la manœuvre ? une telle date ne devrait-elle pas être à NULL ? est-ce que le 1er Janvier 1900 peut convenir ? si non, pourquoi ? @++
__________________
En bases de données relationnelles SQL, il n'y a ni tableaux, ni enregistrements, ni champs: il y a des tables, des lignes et des colonnes. Blog | Profil| Consulter ou télécharger les fichiers d'aide de SQL Server, des versions 2000 à 2012 |
|
00
|
|
|
#11 |
|
Membre à l'essai
![]() Inscription : avril 2010 Messages : 75 ![]() |
En effet, une tel valeur est une valeur test. Je ne fais que récupérer des dates d'un fichier xml (donc écrit en chaine) qui se trouve une la base.
Je voulais en effet savoir si il était possible de stocké la date 0001-01-01 en date dans sql serveur 2005, mais comme ce n'est pas possible, je vais donc rajouter une condition pour que celle-ci n'apparraisse pas dans ma recherche. Merci pour toutes vos réponses, et excusez moi pour la première question bête avec un chiffre de trop alors que je ramais dessus |
|
|
00
|
|
|
#12 | |
![]() ![]() ![]() Nicolas SouquetAdministrateur de base de données Inscription : janvier 2005 Messages : 4 669 ![]() |
Citation:
![]() @++
__________________
En bases de données relationnelles SQL, il n'y a ni tableaux, ni enregistrements, ni champs: il y a des tables, des lignes et des colonnes. Blog | Profil| Consulter ou télécharger les fichiers d'aide de SQL Server, des versions 2000 à 2012 |
|
|
00
|
|
|
#13 |
|
Membre Expert
![]() ![]() Inscription : janvier 2010 Messages : 1 084 ![]() |
|
|
|
00
|
Copyright © 2000-2012 - www.developpez.com