Test si string (datetime) est correct.

Résolu
tmcuh Messages postés 458 Date d'inscription dimanche 22 décembre 2002 Statut Membre Dernière intervention 18 avril 2009 - 3 août 2005 à 23:11
cs_coq Messages postés 6351 Date d'inscription samedi 1 juin 2002 Statut Membre Dernière intervention 2 août 2014 - 4 août 2005 à 19:49
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

cs_coq Messages postés 6351 Date d'inscription samedi 1 juin 2002 Statut Membre Dernière intervention 2 août 2014 99
4 août 2005 à 19:49
Salut,

Probablement avec ISDATE.

Cocoricoooooooo !!!!
coq
MVP Visual C#
3
cs_sim51 Messages postés 240 Date d'inscription dimanche 31 octobre 2004 Statut Membre Dernière intervention 31 décembre 2006 2
3 août 2005 à 23:36
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 !!!
0
tmcuh Messages postés 458 Date d'inscription dimanche 22 décembre 2002 Statut Membre Dernière intervention 18 avril 2009
4 août 2005 à 08:14
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
0
cs_sim51 Messages postés 240 Date d'inscription dimanche 31 octobre 2004 Statut Membre Dernière intervention 31 décembre 2006 2
4 août 2005 à 17:40
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 !!!
0