Visualizzazione dei risultati da 1 a 10 su 10
  1. #1
    Utente di HTML.it L'avatar di x69asterix
    Registrato dal
    Jan 2005
    Messaggi
    1,303

    [VB.NET]SQL: ordinare in modo personalizzato

    uso questa istruzione per caricare una griglia
    Il campo giorno è in questo formato stringa 06/06/07

    codice:
    Select * from ore order by Giorno asc
    però nasce un problema visto che il campo giorno non è un formato data, ma bensì è di tipo stringa, è chiaro che mi vengono caricati in ordine di giorno ma non di mese, quindi dovrei modificare l' istruzione includendo anche il mese, ma come?

  2. #2
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480
    Avresti dovuto usare il tipo di dato corretto ... non a caso esiste quello per le date ...

    Puoi rimediare scrivendo

    SELECT * FROM ore ORDER BY YEAR(Giorno), MONTH(Giorno), DAY(Giorno)

  3. #3
    Utente di HTML.it L'avatar di x69asterix
    Registrato dal
    Jan 2005
    Messaggi
    1,303
    Originariamente inviato da oregon
    Avresti dovuto usare il tipo di dato corretto ... non a caso esiste quello per le date ...

    Puoi rimediare scrivendo

    SELECT * FROM ore ORDER BY YEAR(Giorno), MONTH(Giorno), DAY(Giorno)
    ciao oregon,
    si lo sò che avrei dovuto usare il dato corretto, ma visto le difficoltà affrontate con questo tipo di dato ho preferito lasciarlo come stringa.
    Le difficoltà sono che stò sviluppando in compact framework 1.0 ed il campo date lo accetta solo in mese giorno anno.
    Comunque ho provato quanto suggeritomi ma purtroppo l'applicazione mi si chiude, quindi credo che non accetti questa istruzione.

  4. #4
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480
    Che vuol dire "ti si chiude"? Senza messaggi d'errore? Mi sembra strano ...

  5. #5
    Utente di HTML.it L'avatar di x69asterix
    Registrato dal
    Jan 2005
    Messaggi
    1,303
    Originariamente inviato da oregon
    Che vuol dire "ti si chiude"? Senza messaggi d'errore? Mi sembra strano ...
    codice:
    The function is not recognized by SQL Server CE. [,,,Name of function,Data type,]

  6. #6
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480
    Ah ... ecco ... devi sempre fornire il messaggio d'errore altrimenti non si capisce cosa succede ... e non si puo' mica indovinare ...

    Quindi SQL CE non prevede le funzioni che ti ho indicato ... ma dovrebbe poter usare la funzione SUBSTRING, quindi

    SELECT * FROM ore ORDER BY SUBSTRING(Giorno, 4, 2) + SUBSTRING(Giorno, 1, 2)

    a patto che la stringa sia nel formato

    dd/mm/yyyy

  7. #7
    Utente di HTML.it L'avatar di x69asterix
    Registrato dal
    Jan 2005
    Messaggi
    1,303
    Originariamente inviato da oregon
    Ah ... ecco ... devi sempre fornire il messaggio d'errore altrimenti non si capisce cosa succede ... e non si puo' mica indovinare ...

    Quindi SQL CE non prevede le funzioni che ti ho indicato ... ma dovrebbe poter usare la funzione SUBSTRING, quindi

    SELECT * FROM ore ORDER BY SUBSTRING(Giorno, 4, 2) + SUBSTRING(Giorno, 1, 2)

    a patto che la stringa sia nel formato

    dd/mm/yyyy
    come ho detto all' inizio uso:
    06/06/07
    ok provato, tutto fila, ancora una curiosità così prendo giorno e mese per l'anno aggiungo

    SELECT * FROM ore ORDER BY SUBSTRING(Giorno, 4, 2) + SUBSTRING(Giorno, 1, 2)+ SUBSTRING(Giorno, 7, 2) ??

  8. #8
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480
    Sì, ma dato che l'anno e' piu' importante del mese e del giorno, questo va prima ...

    SELECT * FROM ore ORDER BY SUBSTRING(Giorno, 7, 2) + SUBSTRING(Giorno, 4, 2) + SUBSTRING(Giorno, 1, 2)

  9. #9
    Utente di HTML.it L'avatar di x69asterix
    Registrato dal
    Jan 2005
    Messaggi
    1,303
    Originariamente inviato da oregon
    Sì, ma dato che l'anno e' piu' importante del mese e del giorno, questo va prima ...

    SELECT * FROM ore ORDER BY SUBSTRING(Giorno, 7, 2) + SUBSTRING(Giorno, 4, 2) + SUBSTRING(Giorno, 1, 2)
    ok
    in questo caso ottengo l' ordine crescente, ma se lo volessi decrescente

  10. #10
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480
    Non mi pare difficile ... prova a studiare la clausola

    ORDER BY

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.