IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage SQL Discussion :

Mois précèdent entre 22h et 8h


Sujet :

Langage SQL

  1. #1
    Membre régulier
    Profil pro
    Étudiant
    Inscrit en
    Avril 2008
    Messages
    89
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Somme (Picardie)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2008
    Messages : 89
    Points : 81
    Points
    81
    Par défaut Mois précèdent entre 22h et 8h
    Bonjour,

    [Contexte]
    Je souhaiterais créer un rapport sous netbackup.
    Je ne sais pas exactement quel moteur SQL c’est, il est intégré à l’outil.
    J’ai une table avec l’ensemble des jobs .
    Elle comprend une colonne startTime qui est un Bigint

    [Problème]
    Je souhaiterais connaitre l’ensemble des jobs du mois précèdent entre 22h et 8h depuis le premier jour du mois précèdent 22h jusqu’au premier jour du mois actuel 8h .


    Le problème étant que j’arrivais bien à avoir les enregistrements du mois précèdent entre le premier jour du moi précèdent 22h jusqu’au premier jour du mois actuel 8h, mais pas les enregistrements quotient de ce mois entre 22h et 8h.
    De plus ça ne fonctionne pas pour le premier janviers (normal avec ce que j’ai fait en fait …)

    J’étais partie sur :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    select UTCBigIntToNomTime(StartTime) as day 
    from domain_JobArchive 
    WHERE (DATEPART(hh,DATEFORMAT(cast(UTCBigintToNOMTime(domain_JobArchive.startTime) as DATETIME), 'yyyy-mm-dd hh:mm:ss')) = 22 
    		AND DATEPART(dd,DATEFORMAT(cast(UTCBigintToNOMTime(domain_JobArchive.startTime) as DATETIME), 'yyyy-mm-dd hh:mm:ss')) = 01 
    		AND DATEPART(mm,DATEFORMAT(cast(UTCBigintToNOMTime(domain_JobArchive.startTime) as DATETIME), 'yyyy-mm-dd hh:mm:ss')) = DATEPART(mm,DATEFORMAT(cast(getdate() as DATETIME), 'yyyy-mm-dd hh:mm:ss'))-1)
    order by day
    pour information, la fonction UTCBigintToNOMTime permet de convertir mon entier en date .

    Des pistes ou des idées ?

    Merci à vous

  2. #2
    Rédacteur

    Avatar de SQLpro
    Homme Profil pro
    Expert bases de données / SQL / MS SQL Server / Postgresql
    Inscrit en
    Mai 2002
    Messages
    21 761
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Expert bases de données / SQL / MS SQL Server / Postgresql
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2002
    Messages : 21 761
    Points : 52 547
    Points
    52 547
    Billets dans le blog
    5
    Par défaut
    Sans avoir quel est votre SGBD difficile de vous répondre, car toutes les fonctions de manipulations temporelles sont propres à un SGBD précis.

    Vous pouvez par exemple lancer la requête suivante :
    Cela nous donnera des informations sur le SGBDR....

    A +
    Frédéric Brouard - SQLpro - ARCHITECTE DE DONNÉES - expert SGBDR et langage SQL
    Le site sur les SGBD relationnels et le langage SQL: http://sqlpro.developpez.com/
    Blog SQL, SQL Server, SGBDR : http://blog.developpez.com/sqlpro
    Expert Microsoft SQL Server - M.V.P. (Most valuable Professional) MS Corp.
    Entreprise SQL SPOT : modélisation, conseils, audit, optimisation, formation...
    * * * * * Expertise SQL Server : http://mssqlserver.fr/ * * * * *

  3. #3
    Membre régulier
    Profil pro
    Étudiant
    Inscrit en
    Avril 2008
    Messages
    89
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Somme (Picardie)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2008
    Messages : 89
    Points : 81
    Points
    81
    Par défaut
    c'est un peu le problème , il y a peu de doc de disponible :/

    retourne

    OpsCenter-10881:Failed to execute specified SQL-- Erreur SQL Anywhere -628 : Une division par zéro a été effectuée.

    j'ai tenté avec

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    DATEADD(MONTH, DATEDIFF(MONTH, 0, GETDATE()) - 1, 0)
    la fonction est bien prise en compte mais je n'y arrive pas .

  4. #4
    Rédacteur/Modérateur

    Avatar de SergioMaster
    Homme Profil pro
    Développeur informatique retraité
    Inscrit en
    Janvier 2007
    Messages
    15 031
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2007
    Messages : 15 031
    Points : 40 930
    Points
    40 930
    Billets dans le blog
    62
    Par défaut
    Bonjour,

    Erreur SQL Anywhere
    donc Sybase SQL AnyWhere est le SGBD
    c'est un peu le problème , il y a peu de doc de disponible
    maintenant que l'on connait le SGBD ce n'est plus le cas Date time functions
    MVP Embarcadero
    Delphi installés : D3,D7,D2010,XE4,XE7,D10 (Rio, Sidney), D11 (Alexandria), D12 (Athènes)
    SGBD : Firebird 2.5, 3, SQLite
    générateurs États : FastReport, Rave, QuickReport
    OS : Window Vista, Windows 10, Windows 11, Ubuntu, Androïd

  5. #5
    Membre régulier
    Profil pro
    Étudiant
    Inscrit en
    Avril 2008
    Messages
    89
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Somme (Picardie)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2008
    Messages : 89
    Points : 81
    Points
    81
    Par défaut
    Hello ,

    Merci pour le sybase.

    c'est bon je gère le j'arrive a avoir les enregistrement du 1er au 1er de 22h00 à 8h00

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    select UTCBigIntToNomTime(StartTime) as day 
    from domain_JobArchive 
    Where convert(date,UTCBigIntToNomTime(StartTime)) >= convert(date,dateadd(mm,-1,dateadd(dd,-(day(getdate())-1),getdate())))
    And convert(date,UTCBigIntToNomTime(StartTime)) <= convert(date,dateadd(mm,0,dateadd(dd,-(day(getdate())-1),getdate())))
    And CAST(UTCBigIntToNomTime(StartTime)AS Time )NOT  between '08:00' and '22:00'
    order by day

    il me reste à exclure les enregistrements du 01/M-1 avant 22h00 et 01/M apres 8h00.

  6. #6
    Rédacteur/Modérateur

    Avatar de SergioMaster
    Homme Profil pro
    Développeur informatique retraité
    Inscrit en
    Janvier 2007
    Messages
    15 031
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2007
    Messages : 15 031
    Points : 40 930
    Points
    40 930
    Billets dans le blog
    62
    Par défaut
    Bonjour,

    il me reste à exclure les enregistrements du 01/M-1 avant 22h00 et 01/M apres 8h00.
    je ne connais pas assez Sybase pour vous aider dans la formulation exacte mais il me semble qu'il suffirait de "créer les bonnes dates" avant de faire la sélection sur les heures !

    je m'explique en fait vous voulez *une date égale au début du mois précédent à partir de 22h (donc si nous étions le 01/02/2015) 01/01/2015 22:00:00)
    et une date égale au 1° du mois en cours (toujours dans mon hypothèse 01/02/2015 07:59:59 << avec cette dernière on pourrait même utiliser between )

    *une date , la confusion est là, en fait c'est une datetime (ou timestamp) qu'il vous faut
    MVP Embarcadero
    Delphi installés : D3,D7,D2010,XE4,XE7,D10 (Rio, Sidney), D11 (Alexandria), D12 (Athènes)
    SGBD : Firebird 2.5, 3, SQLite
    générateurs États : FastReport, Rave, QuickReport
    OS : Window Vista, Windows 10, Windows 11, Ubuntu, Androïd

  7. #7
    Membre régulier
    Profil pro
    Étudiant
    Inscrit en
    Avril 2008
    Messages
    89
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Somme (Picardie)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2008
    Messages : 89
    Points : 81
    Points
    81
    Par défaut
    hello,

    je pense m'en être sortie avec :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    SELECT UTCBigIntToNomTime(StartTime) as day 
    FROM domain_JobArchive 
    WHERE convert(datetime,UTCBigIntToNomTime(StartTime)) between convert(datetime,left(convert(varchar, convert(date,dateadd(mm,-1,dateadd(dd,-(day(getdate())-1),getdate()))), 121),4+1+2+1+2) + ' 08:00') and convert(datetime,left(convert(varchar,convert(date,dateadd(mm,0,dateadd(dd,-(day(getdate())-1),getdate()))) , 121),4+1+2+1+2) + ' 21:59')
    AND cast(UTCBigIntToNomTime(StartTime)AS Time ) not between '08:00' and '22:00'
    ORDER BY day
    pas sûr que ça soit super propre ...

Discussions similaires

  1. Filtre entre le dernier Lundi du mois précédent et
    Par boutinj dans le forum Développement
    Réponses: 5
    Dernier message: 26/10/2009, 12h56
  2. Réponses: 2
    Dernier message: 02/07/2007, 16h52
  3. Recherche par mois précédent dans formulaire
    Par Alexandr dans le forum Access
    Réponses: 13
    Dernier message: 07/09/2006, 17h19
  4. Réqueter sur les dates du mois précédent.
    Par Bigdeal dans le forum Access
    Réponses: 4
    Dernier message: 08/07/2006, 13h11
  5. Réponses: 4
    Dernier message: 27/04/2006, 09h22

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo