Test si string (datetime) est correct.

[Résolu]
Signaler
Messages postés
458
Date d'inscription
dimanche 22 décembre 2002
Statut
Membre
Dernière intervention
18 avril 2009
-
Messages postés
6351
Date d'inscription
samedi 1 juin 2002
Statut
Modérateur
Dernière intervention
2 août 2014
-
Voilà un big soucis avec SQL. Je récupère une donnée de type char[10]
provenant d'une table (qui ne m'appartient pas) et je dois tester à
l'interrieur si le champs char[10] (libre) correspond à une date valide.

En gros ce champs ne sert dans le programme que comme champs de saisie
de date, mais si la secretaire tape 12/13/2005, SQL server doit gérer
le fait que la date n'est pas valide.

Car moi derrière je vais transformer ce string en datetime mais voilà sql renvoie une erreur sans pouvoir la gérer.

Quelqu'un a -t-il une solution?



Par avance merci,

Laurent

4 réponses

Messages postés
6351
Date d'inscription
samedi 1 juin 2002
Statut
Modérateur
Dernière intervention
2 août 2014
97
Salut,

Probablement avec ISDATE.

Cocoricoooooooo !!!!
coq
MVP Visual C#
Messages postés
240
Date d'inscription
dimanche 31 octobre 2004
Statut
Membre
Dernière intervention
31 décembre 2006
1
Salut,

Pour moi il faut que tu fasse une fonction stockée date_is_valid qui renvoie true si la date est valide.

Pour cela il te suffit de tester si la partie comprise entre le 4 et le
5 caractère est comprise entre 1 et 12, puis suivant le mois si la
partie comprise entre le 1 et le 2 caractère fait bien parti du mois,
ainsi que les séparateur ( donc le 3, 6 caractère sont bien des / ).

En suite il faut que tu créer un trigger qui avant que tu insère ou que tu update dans ta base te dise si la date est valide

Voilà, Bonne continuation.

N'oubliez pas de cliquer sur réponse acceptée si la réponse vous convient !!!
Messages postés
458
Date d'inscription
dimanche 22 décembre 2002
Statut
Membre
Dernière intervention
18 avril 2009

hello, tout d'abord merci pour cette réponse on va dire qu'elle me va à
moitié, car crée la fonction celà impliquera qu'il faille créer aussi
le controle qui va avec, année bisextile, mois < 30 jours, etc...
beaucoup plus compliqué donc que de simplement tester si compris dans
une fourchette. ex : 29/02/2005, existe pas.

Il n'existe donc aucune fonction prévu dans SQL pour faire celà?

Amicalement TMCUH
Messages postés
240
Date d'inscription
dimanche 31 octobre 2004
Statut
Membre
Dernière intervention
31 décembre 2006
1
Re,

Je sais pas si cette fonction existe, cependant le serveur doit bien en
posséder une pour que lorsqu'on entre une date non valide dans un champ
date, une erreur apparaisse.

Sinon pour les années bisesxile, comme cela revient tout les quatres
ans, ba tu fais la différence entre l'année entré et une année
bisextile ( je ne me souviens quand c'était la dernière ) puis tu
divise par 4 et si le reste est de zero, ba c'est une année bisextile (
cela revient à faire un modulo 4 ).

La fonction n'est pas difficile a programmer, mais un peu longue c'est tout.

Bonne continuation.

N'oubliez pas de cliquer sur réponse acceptée si la réponse vous convient !!!