[sql] vérifier le format d'une colonne

vérifier le format d'une colonne [sql] - SQL/NoSQL - Programmation

Marsh Posté le 06-06-2007 à 11:23:41    

Bonjour, je voudrais ecrire une requete qui verifie que le format d'une colonne est bien en yyyy-mm-dd, et qui retourne ce que vous voulez pour dire si oui ou non c'est le bon format :D
 
par exemple j'ai une table tab et une colonne date_cree, je veux etre sur que dans chaque ligne de cette colonne, ma date est donc du yyyy-mm-dd
 
merci d'avance pour votre aide

Reply

Marsh Posté le 06-06-2007 à 11:23:41   

Reply

Marsh Posté le 06-06-2007 à 11:25:53    

Pourquoi ne pas ajouter une contrainte empêchant que le format ne soit pas bon [:petrus dei]
 
Ou, encore mieux, pourquoi ne pas utiliser directement un datatype date/time qui est fait pour ça [:mlc]


---------------
Stick a parrot in a Call of Duty lobby, and you're gonna get a racist parrot. — Cody
Reply

Marsh Posté le 06-06-2007 à 11:31:48    

En fait le truc c'est que je suis dans un grosse boite qui a deja fait son boulot à ce niveau là.
Moi je suis la que pour faire des tests, maintenant je suis sur que de leur coté ils ont bien fait leur boulot (test en amont), mais moi mon boulot c'est de montrer au client en balancant un test devant eux que tout marche bien :p
Donc pas le choix lol

Reply

Marsh Posté le 06-06-2007 à 11:45:06    

le plus simple c'est de caster ta chaine yyyy-mm-dd en date dans une fonction qui choppe l'exception si elle se produit.
 
genre en oracle:
 

Code :
  1. CREATE OR REPLACE FUNCTION is_date(vvalue varchar2,vmask) RETURN integer IS
  2. tmpVar DATE;
  3. BEGIN
  4.    tmpVar := to_date(vvalue,vmask);
  5.    RETURN 1;
  6.    EXCEPTION
  7.      WHEN OTHERS THEN
  8.       return 0;
  9. END is_date;


 
puis la tu ferais un select
 

Code :
  1. select date_format_caractere,is_date(date_format_caractere,'YYYY-MM-DD') date_valide
  2. from ta_table

Reply

Marsh Posté le 06-06-2007 à 11:51:41    

J'ai pas encore testé, mais je voudrais savoir si c'est possible lorsqu'on a un acces qu'en lecture? vu que je vois un "create"

Reply

Marsh Posté le 06-06-2007 à 11:57:45    

tu ne peux même pas de créer une fonction quelque part?  
parceque si tu dois t'amuser a écrire en sql un check de date c'est un peu du temps perdu.
 
faut faire le joli avec ton dba alors

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed