Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 13
  1. #1
    Utente di HTML.it
    Registrato dal
    Oct 2010
    Messaggi
    181

    [Oracle] Quante visite in un anno?

    Salve ho una tabella chiamata visite con questi campi

    id, nome, data

    La colonna "data" è di tipo DATE e per inserire la data ho usato la funzione systimestamp di oracle.

    Dovrei calcolare quante visite sono state eseguite in un anno (dal primo gennaio 2010 al 31 dicembre 2010 ad esempio)

    Come potrei fare?

  2. #2
    Utente di HTML.it L'avatar di nicola75ss
    Registrato dal
    Nov 2004
    Messaggi
    12,922
    codice:
    select count(*) 
    from tabella
    where data between '01-gen-2010' and '31-dic-2010'
    oppure

    codice:
    select count(*) 
    from tabella
    where extract(year from data) = 2010

  3. #3
    Utente di HTML.it
    Registrato dal
    Oct 2010
    Messaggi
    181
    wow funziona! Grazie mille

    Mi sai dire se esiste una specie di javadoc per oracle?

  4. #4
    Utente di HTML.it L'avatar di nicola75ss
    Registrato dal
    Nov 2004
    Messaggi
    12,922
    Non ne ho idea.

  5. #5
    Utente di HTML.it
    Registrato dal
    Oct 2010
    Messaggi
    181
    ok grazie lo stesso. mi interessava anche perchè ho provato a dare una query che mi ritorna tutte le visite in un mese (nel mio caso febbraio..), come riporta questo sito:

    http://www.plus2net.com/sql_tutorial/between-date.php

    scrivendo: SELECT * FROM visita WHERE month(data) between '02' and '02'

    oracle mi ritorna l'errore: ORA-00904: "MONTH": identificativo non valido

    EDIT: scrivendo cosi sembra funzionare:

    select count(*)
    from visita
    where extract(month from data) = 02

  6. #6
    Utente di HTML.it L'avatar di nicola75ss
    Registrato dal
    Nov 2004
    Messaggi
    12,922
    Se nella query metti solo il mese ti conteggia i record di febbraio a prescindere dall'anno.

    codice:
    select count(*) from visita where to_char(data,'yyyymm') = 201002

  7. #7
    Utente di HTML.it
    Registrato dal
    Oct 2010
    Messaggi
    181
    ops! è vero, non ci avevo pensato!

  8. #8
    Utente di HTML.it
    Registrato dal
    Oct 2010
    Messaggi
    181
    ciao, riuppo un attimo perchè ho notato un comportamento strano di oracle.

    se io voglio i dati da giorno 02/02/2011 al 12/02/2011 sono costretto a scrivere

    select count(*)
    from tabella
    where data between '02-feb-2011' and '13 -feb-2011'

    altrimenti non mi considera le righe relative alla data 12-feb-2011!

    La prima soluzione che mi è venuta in mente è aumentare di 1 giorno la data (tramite java)ma cosi facendo, se voglio i dati dal 12-feb-2011 al 28-feb-2011 verrà eseguita la query:


    select count(*)
    from tabella
    where data between '12-feb-2011' and '29 -feb-2011'

    quindi la mia soluzione non va bene!

    mi sa tanto che devo trovare una funzione di oracle che incrementi la data...

  9. #9
    Utente di HTML.it L'avatar di nicola75ss
    Registrato dal
    Nov 2004
    Messaggi
    12,922
    Prova così

    codice:
    select count(*) from tabella
    where data between to_date('2011/02/02','yyyy/mm/dd') and to_date('2011/02/13','yyyy/mm/dd')

  10. #10
    Utente di HTML.it
    Registrato dal
    Oct 2010
    Messaggi
    181
    praticamente dal 2 al 12 febbrario ci sono 4 visite e scrivendo:

    codice:
    select count(*) from tabella
    where data between to_date('2011/02/02','yyyy/mm/dd') and to_date('2011/02/12 ','yyyy/mm/dd')
    ne trova 3, l'unica è di aumentare di un giorno la seconda data..

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.