Software » Query SQL
Query SQL
Publié le 05/09/2007 @ 13:42:45,
Par Jean-Christophehello,
J'ai une DB avec des entrée de sous forme de
Je voudrais faire un query sur base d'une date, mais qui me rendrait les résultats qui ont heure IN après 6.00 et heure OUT avant le LENDEMAIN à 6.00.
Le but est de faire la liste des pointages de prestation pour un jour J, sachant que la nuit (22h->6h) fait partie du jour où ça commence et pas où ça fini.
Ca doit être possible, mais je ne sais pas comment faire.
dans mes mots, ca ressemblerai à
Je ne sais vraiment pas comment tourner l'histoire.
Merci
Dernière édition: 05/09/2007 @ 13:43:34
J'ai une DB avec des entrée de sous forme de
date | operateur | heure IN | heure out | comment
Je voudrais faire un query sur base d'une date, mais qui me rendrait les résultats qui ont heure IN après 6.00 et heure OUT avant le LENDEMAIN à 6.00.
Le but est de faire la liste des pointages de prestation pour un jour J, sachant que la nuit (22h->6h) fait partie du jour où ça commence et pas où ça fini.
Ca doit être possible, mais je ne sais pas comment faire.
dans mes mots, ca ressemblerai à
SELECT * FROM DB WHERE (date = DateRef AND heure IN >= 6.00) AND (date = DateRef+1 AND heure OUT < 6.00)
Je ne sais vraiment pas comment tourner l'histoire.
Merci
Dernière édition: 05/09/2007 @ 13:43:34
Query SQL
Publié le 05/09/2007 @ 13:45:00,
Par ziontourner cad, tu as quoi comme format concret dans ta DB?
et ton query actuel te donne quoi comme résultat/erreur?
et ton query actuel te donne quoi comme résultat/erreur?
Je suis le Roy
Query SQL
Publié le 05/09/2007 @ 13:49:43,
Par ovhQuel est le format utilisé pour stocker l'heure/date ?
Je n'ai rien à voir avec www.ovh.com
Query SQL
Publié le 05/09/2007 @ 13:52:28,
Par gizmoBon, deja, conceptuellement, y a une couille dans ton modele.
"OUT" devrait avoir une contrainte pour verifier qu'il est toujours apres le "IN" correspondant.
Or, avec le "date", tu te retrouves a avoir des incoherence du type "5h est apres 6h".
Il serait nettement plus facile de mettre un timestamp pour "IN" et "OUT" et laisser tomber le champs "date".
Ensuite, tu n'aurais qu'a faire une simple recherche ou "IN" serait sup au jour+6h demande et "OUT" serait inferieur a jour+1j+6h.
"OUT" devrait avoir une contrainte pour verifier qu'il est toujours apres le "IN" correspondant.
Or, avec le "date", tu te retrouves a avoir des incoherence du type "5h est apres 6h".
Il serait nettement plus facile de mettre un timestamp pour "IN" et "OUT" et laisser tomber le champs "date".
Ensuite, tu n'aurais qu'a faire une simple recherche ou "IN" serait sup au jour+6h demande et "OUT" serait inferieur a jour+1j+6h.
Concept vivant.
Query SQL
Publié le 05/09/2007 @ 13:52:44,
Par Jean-Christophepour l'heure et la date, pour le moment, je crois que c'est une string.
La DB d'origine est un fichier XLS.
En fait, ce qui m'ennuie, c'est les parenthèses. Je ne sais pas si je peux les utiliser ou pas.
J'ai pas essayer le query tel quel, j'étais tellement sur que ca ne fonctionnerait pas
La DB d'origine est un fichier XLS.
En fait, ce qui m'ennuie, c'est les parenthèses. Je ne sais pas si je peux les utiliser ou pas.
J'ai pas essayer le query tel quel, j'étais tellement sur que ca ne fonctionnerait pas
Query SQL
Publié le 05/09/2007 @ 13:55:02,
Par Jean-ChristopheBon, deja, conceptuellement, y a une couille dans ton modele.
"OUT" devrait avoir une contrainte pour verifier qu'il est toujours apres le "IN" correspondant.
Or, avec le "date", tu te retrouves a avoir des incoherence du type "5h est apres 6h".
Il serait nettement plus facile de mettre un timestamp pour "IN" et "OUT" et laisser tomber le champs "date".
Ensuite, tu n'aurais qu'a faire une simple recherche ou "IN" serait sup au jour+6h demande et "OUT" serait inferieur a jour+1j+6h.
"OUT" devrait avoir une contrainte pour verifier qu'il est toujours apres le "IN" correspondant.
Or, avec le "date", tu te retrouves a avoir des incoherence du type "5h est apres 6h".
Il serait nettement plus facile de mettre un timestamp pour "IN" et "OUT" et laisser tomber le champs "date".
Ensuite, tu n'aurais qu'a faire une simple recherche ou "IN" serait sup au jour+6h demande et "OUT" serait inferieur a jour+1j+6h.
Attends, j'ai pas tout suivi.
Si j'ai une prestation de 23h qui commence à 6.30, elle va jusque 5.30 le lendemain, et elle est valide.
Je suis SUR que OUT est après IN. Toujours. Par contre, je ne peux pas laisser tomber la date, puisque le fichier contient des infos sur plusieurs jours et que je dois sortir un rapport quotidien.
Query SQL
Publié le 05/09/2007 @ 14:00:06,
Par ClandestinoSi tu codes tes timestamps sous le format AAAAMMJJHHMM, ça devrait être plus facile.
Par exemple :
Non ?
Dernière édition: 05/09/2007 @ 14:00:46
Par exemple :
SELECT * FROM table WHERE ((timestamp_in >= 200709051800) AND (timestamp_out < 2007090600));
Non ?
Dernière édition: 05/09/2007 @ 14:00:46
Query SQL
Publié le 05/09/2007 @ 14:00:10,
Par gizmosi tu n'as pas de contrainte sur "jour-heure" tu ne peux pas etre sur. Jamais. C'est pour ca que je dis qu'il faut au minimum mettre des timestamp.
Concept vivant.
Query SQL
Publié le 05/09/2007 @ 14:01:08,
Par gizmoSi tu codes tes timestamps sous le format AAAAMMJJHHMM, ça devrait être plus facile. Par Donc par exemple, ça te donnerai un truc du genre :
Non ?
SELECT * FROM table WHERE ((timestamp_in >= 200709051800) AND (timestamp_out < 2007090600));
Non ?
That's my point.
Concept vivant.
Query SQL
Publié le 05/09/2007 @ 14:01:51,
Par ClandestinoC'est bien ce que je pensais.
Query SQL
Publié le 05/09/2007 @ 14:06:49,
Par Jean-Christopheoui, sauf que au départ, dans mon fichier, j'ai la date sous forme de "04/09/2007" et l'heure sous forme de "6.00" qui sont des strings.
Je fais comment alors?
Je fais comment alors?
Query SQL
Publié le 05/09/2007 @ 14:08:18,
Par Jean-ChristophePS : je ne sais pas modifier le fichier de départ, je le reçois tel quel et le but est de ne pas devoir commencer par chipoter dans le fichier...
Query SQL
Publié le 05/09/2007 @ 14:11:25,
Par gizmoeuh, oui, mais tu recois un fichier ou une db? parce que si c'est un fichier, rien ne t'empeche de remplir la db comme bon te semble, hein
Germaine: d'autant plus que si tu sais que les prestations ne durent jamais plus de 24 heures, le probleme est encore plus con, car on pourrait meme se contenter de filtrer sur "date", donc je suppose que c'est plus subtile que ca en a l'air.
Dernière édition: 05/09/2007 @ 14:12:55
Germaine: d'autant plus que si tu sais que les prestations ne durent jamais plus de 24 heures, le probleme est encore plus con, car on pourrait meme se contenter de filtrer sur "date", donc je suppose que c'est plus subtile que ca en a l'air.
Dernière édition: 05/09/2007 @ 14:12:55
Concept vivant.
Query SQL
Publié le 05/09/2007 @ 14:20:53,
Par philfrgizmo> +10
Il faut un champ qui réunit l'info de date et d'heure, facile à comparer, à vérifier, à afficher de façon splittée...
JC> Si c'est toi qui crée la db à partir du fichier excel, et que tu es maître du shéma de la db, refais ça en mieux
Il faut un champ qui réunit l'info de date et d'heure, facile à comparer, à vérifier, à afficher de façon splittée...
JC> Si c'est toi qui crée la db à partir du fichier excel, et que tu es maître du shéma de la db, refais ça en mieux
Query SQL
Publié le 05/09/2007 @ 14:22:09,
Par Jean-ChristophePour récapituler:
Je reçois un fichier XLS.
Je l'attaque comme une DB pour pouvoir faire des requêtes plus complexes qu'un VLOOKUP.
Les prestations ne dure jamais plus de 24h, mais une prestation entre 2.00 et 3.45, par exemple est à compter sur la veille, puisque la pause de la nuit est comptabilisée dans la journée qui précède et pas celle qui suit. une "journée" va donc de aujourd'hui 6.00 à demain 6.00.
Je ne sais pas si c'est plus clair...
Je reçois un fichier XLS.
Je l'attaque comme une DB pour pouvoir faire des requêtes plus complexes qu'un VLOOKUP.
Les prestations ne dure jamais plus de 24h, mais une prestation entre 2.00 et 3.45, par exemple est à compter sur la veille, puisque la pause de la nuit est comptabilisée dans la journée qui précède et pas celle qui suit. une "journée" va donc de aujourd'hui 6.00 à demain 6.00.
Je ne sais pas si c'est plus clair...
Query SQL
Publié le 05/09/2007 @ 14:22:57,
Par philfrSi tu codes tes timestamps sous le format AAAAMMJJHHMM, ça devrait être plus facile.
En général, les db ont un type spécifique datetime, non ? ...
Query SQL
Publié le 05/09/2007 @ 14:24:29,
Par philfrTu fais des query SQL sur un XLS sans passer par une db ?
Query SQL
Publié le 05/09/2007 @ 14:26:17,
Par ClandestinoOui, mais j'ai toujours trouvé qu'avoir ce format particulier associé à une classe avec méthode pour les conversions, c'est plus mieux bien
Sous windows, il y a moyen de définir une source ODBC pointant sur un fichier XLS pour peu que les données des tables aient été définies via un NAME/RANGE.
Dernière édition: 05/09/2007 @ 14:27:36
Query SQL
Publié le 05/09/2007 @ 14:31:14,
Par philfrOui, mais j'ai toujours trouvé qu'avoir ce format particulier associé à une classe avec méthode pour les conversions, c'est plus mieux bien
Oué, puis si tu veux gérer des fuseaux horaires, ou les heures d'été, tu réinventes la roue...
Query SQL
Publié le 05/09/2007 @ 14:32:04,
Par gizmoOui, mais j'ai toujours trouvé qu'avoir ce format particulier associé à une classe avec méthode pour les conversions, c'est plus mieux bien
Et perdre du coup toutes les methodes de convenance efficaces du DBMS? Je suis loin d'etre convaincu par cette approche.
Concept vivant.