Visualizzazione dei risultati da 1 a 8 su 8
  1. #1

    [MySQL] Espressione REGEXP in WHERE per gg/mm/yyyy

    Salve,
    maledette espressioni regolari....
    Ho un campo data gg/mm/yyyy
    Quindi Nmiliardi di valori:

    12/02/1975
    22/06/1945
    02/04/1965
    ....
    03/01/1991
    ec...

    Dovrei raggrupparli per anno (doh).
    Quindi avere
    1975 : totale 10
    1945 : totale 2
    ecc....
    Purtroppo il valore "anno" non è in un campo separato.
    C'è modo di usare le espressioni regolari per ottenere il risultato che voglio?
    Caos
    Ciao e grazi

  2. #2

    Re: [MySQL] Espressione REGEXP in WHERE per gg/mm/yyyy

    Originariamente inviato da PazZII
    Ho un campo data gg/mm/yyyy
    un campo gg/mm/yyyy non è un campo data ma un campo stringa(varchair/text o loro simili).
    mysql non prevede nessun campo data con questo formato.

    Consiglio che ti dò: utilizza i campi DATE/DATETIME di mysql con il relativo formato e tutto diventa semplice (oltre che correto).

    Se non vuoi correggere tale ERRORE ne discende che devi fare cose "strane" per raggruppare i record:
    codice:
    SELECT *, YEAR(STR_TO_DATE(campo_stringa_utilizzato_per_salvare_date, 'd%/%m/%Y')) as anno 
    FROM tabella 
    ORDER BY anno
    Poi bisogna vedere cosa intendi per raggruppare...

    Insomma: a partire da quell'errore ne deriva l'impossibilità/difficolta a fare le cose che normalemnte è possibile eseguire con mysql.
    http://www.miniscript.it
    Se ti sono stato di aiuto in qualche modo in questo forum iscriviti alla fan page di Miniscript - il mio blog di programmazione web.

  3. #3

    Re: Re: [MySQL] Espressione REGEXP in WHERE per gg/mm/yyyy

    Originariamente inviato da oly1982
    un campo gg/mm/yyyy non è un campo data ma un campo stringa(varchair/text o loro simili).
    mysql non prevede nessun campo data con questo formato.

    Consiglio che ti dò: utilizza i campi DATE/DATETIME di mysql con il relativo formato e tutto diventa semplice (oltre che correto).

    Se non vuoi correggere tale ERRORE ne discende che devi fare cose "strane" per raggruppare i record:
    codice:
    SELECT *, YEAR(STR_TO_DATE(campo_stringa_utilizzato_per_salvare_date, 'd%/%m/%Y')) as anno 
    FROM tabella 
    ORDER BY anno
    Poi bisogna vedere cosa intendi per raggruppare...

    Insomma: a partire da quell'errore ne deriva l'impossibilità/difficolta a fare le cose che normalemnte è possibile eseguire con mysql.
    Esatto, concordo con te che è limitante.
    Comunque con "data" non mi riferivo al tipo di campo ma semplicemente al nome che ha nella tabella
    Vedo se riesco a correggere.
    Ciao e grazie mille

  4. #4
    Cavolo ho un problema... la data è legale ma mi restituisce NULL

    codice:
    query SQL: SELECT *, YEAR(STR_TO_DATE(data, 'd%/%m/%Y')) as anno FROM test ORDER BY anno LIMIT 0, 30 ; 
    Righe: 3 
    
    idtest  data  anno  
    1 10/10/2001 NULL 
    2 10/01/2001 NULL 
    3 01/01/2006 NULL
    Che cosa può essere?
    Intanto indago ma mi sembra semplice utilizzare STR_TO_DATE mi sfuggirà qualche stupidaggine...

  5. #5
    mi sa che era %d e non d%
    IP-PBX management: http://www.easypbx.it

    Old account: 2126 messages
    Oldest account: 3559 messages

  6. #6
    Originariamente inviato da Santino83_02
    mi sa che era %d e non d%
    sìsì già visto

  7. #7
    ma quindi ha funzionato?
    IP-PBX management: http://www.easypbx.it

    Old account: 2126 messages
    Oldest account: 3559 messages

  8. #8
    Sìsì
    codice:
    SELECT* , YEAR( STR_TO_DATE( 
    DATA ,'%d/%m/%Y'))AS anno
    FROM test
    ORDERBY anno
    LIMIT 0 , 30
    Questo funziona.

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.