Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 15

Discussione: [SQL] ordinamento

  1. #1
    Utente di HTML.it
    Registrato dal
    Jul 2008
    Messaggi
    38

    [SQL] ordinamento

    Ciao ragazzi.. ho un problema, ho una tabella cn alcuni campi tra cui dei timestamp, io devo selezionare dato una data(e time) tutti le altre date(e time) comprese in un certo intervalle, ad esempio 3 giorni..
    es. 2009-02-28 18:19:39 ---> tutte le altre date comprese tra i 3 giorni precedenti e successivi.
    Questo riesco a farlo utilizzando il costrutto interval.
    Il problema è come ordinare poi tutte queste date dalla piu vicina alla piu lontana rispetto alla data selezionata??
    Spero di essere stato chiaro. Grazie in anticipo.

  2. #2
    Utente di HTML.it
    Registrato dal
    Apr 2004
    Messaggi
    3,709
    ma ODER BY non va bene?

  3. #3
    Utente di HTML.it
    Registrato dal
    Jul 2008
    Messaggi
    38
    Eh ma con order by mi ordina probabilmente dalla data piu vicina alla data piu lontanta..
    ti facccio un esempio

    data 15/4/2009

    tutte le date nei 3 giorni precedenti e successivi

    db
    15/4/2009
    16/4/2009
    17/4/2009
    13/4/2009
    14/4/2009

    Con order by credo venga: 13/4, 14/4,16/4,17/4

    Invece dovrebbe venire 14/4, 16/4,13/4,17/4

    capito?

  4. #4
    Utente di HTML.it
    Registrato dal
    Apr 2004
    Messaggi
    3,709
    no, deve venire l'ordinamento corretto... a meno che... quale tipo di dati è stato usato per il campo della data?

  5. #5
    Utente di HTML.it L'avatar di nicola75ss
    Registrato dal
    Nov 2004
    Messaggi
    12,922
    Metto le mani avanti dicendoti che l'ho scritta al volo senza testarla più di tanto.

    codice:
    select *,if(data > '2009-04-15',1,0) as ordine from tabella
    where data between 
    '2009-04-15' - interval 2 day and
    '2009-04-15' + interval 2 day 
    order by abs(datediff('2009-04-15',data)),ordine

  6. #6
    Utente di HTML.it
    Registrato dal
    Jul 2008
    Messaggi
    38
    Ciao ragazzi, ho un problema, ho una colonna di timestamp e devo calcolare la differenza tra tutti questi e un timestamp prestabilito, io ho fatto cosi:

    select name_img, (time -'2009-02-28 22:29:03') from img order by time

    e funziona il problema è che mi da ovviamente in uscita una colonna interval, però a me servirebbero i valori assoluti di questo interval, e cn abs mi da un errore su dati di tipo interval.
    C'è un modo?? Grazie mille.

    In pratica a me servirebbero tutti le immagini piu vicine temporalmete a un'immagine data.
    Ciao
    --------------------------------------------------------------------------------------

    Allora io ho una lista di foto con le rispettive date in cui sono state scattate.
    Io selezionando una foto devo fare in modo che vengano ordinate da quella scattata piu vicina temporalemente a quella selezionata a quella piu lontana, il problema è ke ad esempio se ho una foto scattata il 10/7/09
    una il 12/7/09
    e la foto selezionata è 11/7/09
    Utilizzando questa query
    select name_img, (time -'2009-02-28 22:29:03') from img order by time
    mi verrà fuori un intervallo (time - time_selezionato) negativo e uno positivo, io per poterli ordinare li vorrei tutti positivi.
    Capito?

  7. #7
    Utente di HTML.it L'avatar di nicola75ss
    Registrato dal
    Nov 2004
    Messaggi
    12,922
    Non va bene come ti ho già scritto?

    codice:
    select campo_datetime,abs(datediff('2009-07-12',campo_datetime)) as diff 
    from tabella

  8. #8
    Utente di HTML.it
    Registrato dal
    Jul 2008
    Messaggi
    38
    Originariamente inviato da nicola75ss
    Non va bene come ti ho già scritto?

    codice:
    select campo_datetime,abs(datediff('2009-07-12',campo_datetime)) as diff 
    from tabella
    No mi da un errore:
    select name_img, abs(datediff('2009-02-28 22:29:03',time)) as diff from img

    Errore:
    ERROR: function datediff(unknown, timestamp without time zone) does not exist
    LINE 1: select name_img, abs(datediff('2009-02-28 22:29:03',time)) a...
    ^
    HINT: No function matches the given name and argument types. You might need to add explicit type casts.

    ********** Errore **********

    ERROR: function datediff(unknown, timestamp without time zone) does not exist
    Stato SQL: 42883
    Suggerimento: No function matches the given name and argument types. You might need to add explicit type casts.
    Carattere: 22

  9. #9
    Utente di HTML.it L'avatar di nicola75ss
    Registrato dal
    Nov 2004
    Messaggi
    12,922
    Ma stai lavorando su postgresql?

  10. #10
    Utente di HTML.it
    Registrato dal
    Jul 2008
    Messaggi
    38
    Originariamente inviato da nicola75ss
    Ma stai lavorando su postgresql?
    Sisi.. perchè?

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.