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

    [MySQL] risultato funzione in un altra lingua

    Saluti al forum,

    per visualizzare un grafico estraggo i dati con questo codice
    codice:
    Select UNIX_TIMESTAMP(CAST(DATE_ADD(sdata, INTERVAL 1 DAY) AS DATETIME))+1, prezzo from #__pal_prezzo_rame where MONTH(sdata) between 1 and 12 and YEAR(sdata) = '2019'
    Nell'asse X visualizza il mese nel formato mmm ovviamente in inglese ma sarebbe possibile tradurre in italiano il risultato della funzione MONTH(sdata) ?

    Grazie molte per l'aiuto
    Saluti

  2. #2
    Utente di HTML.it
    Registrato dal
    Jul 2022
    Messaggi
    9
    C'è una variabile di sistema che potresti utilizzare.

    codice:
    SET lc_time_names = 'it_IT';
    I dettagli li trovi qui:
    https://dev.mysql.com/doc/refman/8.0...()%20function.

    Così, ad esempio:

    codice:
    set lc_time_names = 'it_IT';
    select monthname('20220716') as Mese
    restituisce luglio.
    Saluti.

  3. #3
    Grazie Scartoffia per il tuo aiuto.
    Purtroppo non riesco ad integrarlo nel componente che sto usando (sono in ambito Joomla). Il componente che sto usando (plotalot) permette di eseguire una select per estrarre i dati ma non mi permette di impostare il linguaggio iniziando con SET
    In pratica devo iniziare per forza con una select.
    Non credo sia possibile definire il linguaggio all'interno della select citata nel post precedente, vero?
    Grazie comunque per l'attenzione dedicatami.

  4. #4
    Utente di HTML.it
    Registrato dal
    Jul 2022
    Messaggi
    9
    E se aggiungessi una funzione che fa il lavoro per te?

    Ad esempio, scrivi questa function:

    codice:
    CREATE FUNCTION `ItaMonthName`(p_Mese tinyint) RETURNS varchar(9) DETERMINISTIC
    BEGIN
        declare ItaMese varchar(9);
        set ItaMese = 
        case 
            when p_Mese = 1 then 'Gennaio'
            when p_Mese = 2 then 'Febbraio'
            when p_Mese = 3 then 'Marzo'
            when p_Mese = 4 then 'Aprile'
            when p_Mese = 5 then 'Maggio'
            when p_Mese = 6 then 'Giugno'
            when p_Mese = 7 then 'Luglio'
            when p_Mese = 8 then 'Agosto'
            when p_Mese = 9 then 'Settembre'
            when p_Mese = 10 then 'Ottobre'
            when p_Mese = 11 then 'Novembre'
            when p_Mese = 12 then 'Dicembre'
            else ''
        end;    
        RETURN ItaMese;
    END
    la crei sul tuo database e dalla tua query la richiami così:

    codice:
    SELECT itaMonthName(MONTH(sData)) AS Mese

  5. #5
    Ah però!
    Grazie scartoffia! io so proprio poco di SQL e queste cose non so farle.
    Al rientro provo subito ad inserire questa funzione e ti do un feedback
    Comunque grazie per il tuo interessamento.
    Saluti

  6. #6
    Ciao,

    mi dispiace ma non sono riuscito a capire dove inserire/salvare la funzione in PhpMyAdmin.
    Ho inserito la funzione nel tab SQL e mi restituisce questo errore
    #1064 - Errore di sintassi nella query SQL vicino a '' linea 3
    Se puoi mi dai indicazioni su come procedere?
    Grazie molte.

  7. #7
    Utente di HTML.it
    Registrato dal
    Jul 2022
    Messaggi
    9
    La funzione è un oggetto che devi aggiungere al tuo database.
    Quindi devi usare il MySQL Workbench per queste azioni o devi trovare il modo di creare la funzione con PhpMyAdmin, ma io non lo conosco e non saprei aiutarti in questo.
    Se il tuo database è su un server di cui tu non sei l'admin, devi chiedere aiuto alla struttura su come fare.
    Ultima modifica di Scartoffia; 18-07-2022 a 10:29

  8. #8
    D'accordo Scartoffia,

    mi devo indottrinare un pò su questo argomento.
    Intanto ti ringrazio per la cortese disponibilità e le dritte che mi hai dato.

    Saluti

  9. #9
    Utente di HTML.it
    Registrato dal
    Jul 2022
    Messaggi
    9
    Ho replicato l'errore che hai avuto utilizzando il PHPMyAdmin e ho capito come fare per risolvere l'empasse.

    NON devi scrivere la funzione nel tab SQL, ma nel tab Routine.

    Prima, però, di selezionare questo tab, devi fare click sul nome del database (struttura) all'interno del quale vuoi creare la function.

    Quindi:
    1) nell'albero a sinistra, fai click sul db che ti interessa;
    2) dopo di ciò, seleziona il tab Routine;
    3) premi il pulsante Crea nuova routine che trovi all'estrema destra della finestra Routine;
    4) Nei Dettagli della finestra Crea una nuova Routine, compila il campo Nome della routine con la parola ItaMonthName;
    5) Dalla casella di selezione Tipo scegli la voce FUNCTION;
    6) In Parametri metti:
    Nome: p_Mese
    Tipo: TINYINT
    7) In Tipo di risultato: VARCHAR;
    8) in Lunghezza/Valori del risultato: 9
    9) Nello grande casella di testo Definizione incolla il mio codice, senza però la prima riga. Quindi fai copia e incolla da BEGIN a END

    codice:
    BEGIN
        declare ItaMese varchar(9);
        set ItaMese = 
        case 
            when p_Mese = 1 then 'Gennaio'
            when p_Mese = 2 then 'Febbraio'
            when p_Mese = 3 then 'Marzo'
            when p_Mese = 4 then 'Aprile'
            when p_Mese = 5 then 'Maggio'
            when p_Mese = 6 then 'Giugno'
            when p_Mese = 7 then 'Luglio'
            when p_Mese = 8 then 'Agosto'
            when p_Mese = 9 then 'Settembre'
            when p_Mese = 10 then 'Ottobre'
            when p_Mese = 11 then 'Novembre'
            when p_Mese = 12 then 'Dicembre'
            else ''
        end;    
        RETURN ItaMese;
    END
    10) Metti la spunta su E' deterministica

    Adesso, premi il pulsante Esegui.

    Ora, passa al tab SQL, seleziona lo stesso database in cui hai creato la function e prova ad eseguire un test, ad esempio:

    codice:
    SELECT ItaMonthName(Month('20220905'));
    che dovrebbe restituirti Settembre.

    Se ho dimenticato qualcosa replica pure.

    Saluti.
    Ultima modifica di Scartoffia; 18-07-2022 a 15:49 Motivo: Formattazione codice

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.