@kahm
non ho chiaro perché usi convert su una stringa per convertirla a stringa, oltretutto usando lo style sbagliato (103 vs 105).
Da quello che mi pare di capire tu nel server hai una data (in stringa, quindi campo varchar) e la query funziona facendo:
codice:
AND filtro = CONVERT( VARCHAR,'09-30-2022' ,103)
il che mi lascia pensare che stai semplicemente aggiungendo un convert in pi� per nulla, credo funzionerebbe lo stesso facendo cos�:
codice:
AND filtro = '09-30-2022'
Al che ti si presenta (ovviamente) il problema se fai :
codice:
AND filtro = '30-09-2022'
quindi per convertire la data nel formato del server partendo da una stringa (dd-MM-yyyy) dovresti fare questo:
codice:
convert(varchar,convert(date,'30-09-2022',105),110)
Quindi converti la stringa in data (con formato "italiano", quindi 105) e dopo la data in stringa con formato USA (110). Allora in questo caso li trovo un senso, ma convertire da stringa a stringa non dovrebbe fare nulla... come gli spieghi che la tua stringa � una data in un detto formato? per lui � una stringa e boh... o almeno credo
In ogni caso facendo la conversione tramite sql (come sopra) c'è sempre il dubbio di come arriva la stringa in base alla cultura, quindi va bene se lo fa il client italiano che usa il formato (dd-MM-yyyy) ma se poi lo fa un client diverso ovviamente cambia e non quadra più...
Ovviamente a questo punto mi domando come mai non lavori direttamente facendo un ToString() in net specificando sempre il formato del server? Immaginando che hai gia il tipo datetime ti basta fare ToString("MM-dd-yyyy") per "stampare" la stringa 09-30-2022. Nel caso lavori solo con stringhe ti sarebbe comunque utile trasformare la stringa in datetime (DateTime.Parse(dataStringa) questo prende la culture di default, quindi va sempre bene) e poi fai sempre un ToString("MM-dd-yyyy") in modo che il formato sia sempre 09-30-2022
A dire il vero la vera domanda é: come mai non lavori con il tipo data sul database?