Visualizzazione dei risultati da 1 a 8 su 8
  1. #1
    Utente di HTML.it
    Registrato dal
    Dec 2002
    Messaggi
    1,326

    [Firebird SQL] ottenere date in intervallo

    Ciao a tutti,

    ho una tabella cosi:

    (MiaTabella)
    id
    data_dal
    data_al

    con questi dati:
    1, 01/02/2022, 04/02/2022
    2, 07/03/2022, 09/03/2022


    ho bisogno di fare una query che mi restituisca ID e tutte le date negli intervalli....quindi:
    id (riferito a MiaTabella) ,data
    1, 01/02/2022
    1, 02/02/2022
    1, 03/02/2022
    1, 04/02/2022
    2, 07/03/2022
    2, 08/03/2022
    2, 09/03/2022

    qualcuno mi può aiutare?
    grazie

  2. #2

  3. #3
    Utente di HTML.it
    Registrato dal
    Dec 2002
    Messaggi
    1,326
    Ciao Optime e grazie, no quella discussione non è il caso mio.

    io devo ottenere tutte le date comprese nell'intervallo

  4. #4
    e infatti lì si parla proprio di quello

  5. #5
    Utente di HTML.it
    Registrato dal
    Dec 2002
    Messaggi
    1,326
    cerco di capirla meglio

  6. #6
    Utente di HTML.it
    Registrato dal
    Oct 2014
    Messaggi
    539
    credo che per estrarre una sequenza di date da un range, sia necessario avere una tabella "calendario",
    puoi creare la tabella con i singoli giorni, con excel o un tool a tua disposizione

    poi con la query estraggo gli elementi selezionati,
    codice:
    SELECT id, CONVERT(varchar, data_analisi, 23) as dataFROM prova p, calendario c
    WHERE c.data_analisi BETWEEN p.data_dal AND p.data_al
    order by id, data_analisi
    che mi da come risultato
    Cattura.GIF
    il convert serve per avere la data nel formato che vedi

  7. #7
    1. il calendario d'appoggio direi che serve solo se devi avere in output anche i giorni dove non hai niente
    2. per la query, come già spiegato anche nell'altro thread, dovrebbe bastare qualcosa del tipo SELECT colonne FROM tabella WHERE colonna_data_dal <= <parametro_data_fine> AND colonna_data_al >= <parametro_data_inizio>

  8. #8
    Utente di HTML.it
    Registrato dal
    Dec 2002
    Messaggi
    1,326
    Salve a Tutti.

    per fare questa query ho creato la tabella calendario tramite una Stored procedure
    tale SP mi restituisce n rcord, dove n è il numero di giorni compreso tra due date.

    codice:
    create or alter procedure dateinperiodo (    data_dal date,
        data_al date)
    returns (
        data date)
    as
    declare variable miadata date;
    begin
      /* Procedure Text */
        if (data_dal is null) then exit;
        if (data_al is null) then exit;
    
    
        miadata=data_dal;
    
    
        while (miadata<=data_al) do
         begin
          data=miadata;
          suspend;
          miadata=dateadd(1 day to miadata);
         end
    end

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.