Select su campo data "bizzarra"

di il
6 risposte

Select su campo data "bizzarra"

Scusate se vi rompo sicuramente con una domanda banale, ma proprio non so capacitarmi dell'accaduto...Eseguo una Select dove estraggo dati da una tabella di un DB Access, inserendo la condizione WHERE su un campo che contiene una serie di date. Fino al 29 Dicembre tutto funzionava bene. Oggi ho ripreso il progetto e non funziona piu!!! O meglio: se io imposto manualmente la data nel formato #mm/GG/aaaa# tutto è OK, se la lascio nel formato #gg/mm/aaaa# non funziona. La cosa stranissima è che impostando la data in #29/12/2022# tutto funziona! Idem con #12/29/2022# !! Delucidatemi ma non tiratemi pomodori! ?? Grazie infinite!

6 Risposte

  • Re: Select su campo data "bizzarra"

    Perché alla Microsoft hanno avuto la brillantissima idea che, se non funziona il cast della stringa nel formato americano (com'era nel caso del 29 dicembre), si può tranquillamente provare a castare nel formato europeo. Poi, se a gennaio sei nei guai, sono fatti tuoi.

    Usa il formato americano nelle literals ##

  • Re: Select su campo data "bizzarra"

    04/01/2023 - Makino ha scritto:


    Eseguo una Select dove estraggo dati da una tabella di un DB Access, inserendo la condizione WHERE su un campo che contiene una serie di date.

    Usa i parametri nelle tue query!

    Leggi questo articolo per approfondire (e risolvere) la problematica una volta per tutte, qualunque sia il tipo di dato con cui hai a che fare, e possibilmente ridurre la possibilità di un attacco tramite SQL Injection.

    Ciao! :)

  • Re: Select su campo data "bizzarra"

    Quindi colpa di Mamma Microsoft? C'era da aspettarselo! Grazie ad entrambi per i suggerimenti!

  • Re: Select su campo data "bizzarra"

    Mamma MS consiglia l'uso dei parametri. Colpa di chi non segue consigli.

  • Re: Select su campo data "bizzarra"

    Quello dei parametri è un discorso corretto, ma resta il fatto che MS ogni tanto la fa fuori dal vaso. Il sistema dei literals deve essere coerente qualunque sia la convenzione adottata, altrimenti poi con sviluppatori meno esperti succedono queste cose…

  • Re: Select su campo data "bizzarra"

    Microsoft non è perfetta, però la documentazione spiega bene come funzionano le date in formato “literals”:

    • Vanno impostate nel formato americano (mm/dd/yyyy) o in un formato non ambiguo internazionale (yyyy-mm-dd). Così funziona sempre
    • Se usando i formati di cui sopra non riesce a convertire la data, allora prova ad usare il formato europeo (gg/mm/aaaa), ma solo per comodità e se non funzionano gli altri formati

    Per cui, se vuoi usare i literals, ti consiglio di usare il formato yyyy-mm-dd poichè più facile da leggere per noi italiani, fermo restando che è meglio lavorare coi parametri come già segnalato

Devi accedere o registrarti per scrivere nel forum
6 risposte