Ecco una pubblicazione completa in cui vedrai come risolvere il problema "Errore di conversione durante la conversione di dati e ora" in SQL Server.
Date e orari in SQL Server sono soggetti a errori nell'esecuzione delle query a causa dell'incoerenza nella formattazione di data/ora. Assicurati che una stringa di data sia formattata correttamente prima della conversione, altrimenti potrebbe verificarsi un errore di questo tipo. Se il letterale di data non è nel formato corretto, SQL non è in grado di interpretarlo come un valore DateTime; da qui, "Conversione non riuscita durante la conversione di data e/o ora da stringa di caratteri".
Conversione non riuscita durante la conversione di data e ora
Ciò accade perché la stringa che si sta convertendo ha un formato non corretto, tra cui un delimitatore inappropriato e una sequenza di date errata. Un altro probabile motivo di questo problema potrebbe essere una formattazione non corretta o l'uso di caratteri speciali. Una convalida corretta dell'input eviterà anche qualsiasi errore di conversione, insieme all'uso di formati coerenti appropriati.
Un esempio:
SQL Server supporta il formato data-giorno-mese-anno della notazione britannica di data e ora, ad esempio 10 gennaio 2015 o 10/1/2015, utilizzando la funzione "converti" integrata e con uno stile di formattazione pari a 103.
In questo esempio, puoi vedere il formato non corretto della stringa di data fornita. Ha fornito in modo non corretto mese, giorno e anno in quell'ordine, cosa che SQL Server non capisce e restituisce un errore. Il formato corretto per convertire le date usando lo stile data "103" in stile UK è "dd/mm/yyyy".
Errore di formato: impossibilità di specificare @date_time_value select CONVERT(datetime2, @date_time_value, 103), as UK_Date_Time_Style from the data set "varchar(100)= '10/16/2015 21:02:04'"Errore dovuto al formato data errato Figura 2
Formato corretto:
Three "dd/mm/yy" e 103 "dd/mm/yy" sono i formati di data per il britannico e il francese, rispettivamente. Qui, 103 e 3 sono i formati di data utilizzati.
Declare variable '@date_time_value' with value '10/1/15 21:02:04' and use CONVERT function with the parameters 'datetime2' and '@date_time_value' as a value 103 as its source for the Date_Time_Style.Figure 3: The Correct Date Format using "dd/mm/yyyy" French and British datingDeclare @date_time_value as a varchar(100) and give it a value of '10/1/15 21:02:04'. Next, execute the CONVERT function against datetime2 and @date_time_value supplying 3 for UK_Date_Time_Style.Appropriate Date Format using "dd/mm/yy" Figure 4 French and British dating
The second sample is:
Sometimes the faulty data that you are trying to save can be the cause of date conversion failure in SQL Server - rather than the date or time formats applied.
Incorrect Date:
As the year 2019 is not a leap year, the error below occurs solely because the date "29 February" does not exist in that year.
Declare date and time. '2019-02-29 21:02:04' is the value of varchar(100). select the second datetime value from the parameter "cast" Figure 5: Because the year 2019 is not a leap year, 29th of February is not included. This is the reason for the occurring error.
Correct Option:
Declare the date and time value, please. '2019-02-28 21:02:04' is varchar(100) value. select the second datetime value from the parameter "cast"Picture 6: Updated listing
ISO 8601 Dates Standard:
While there are plenty of ways to manipulate date values, choosing a datetime representation may pose some usability issues when working with an audience based worldwide/international. Avoid using such date/time literals that are specific for any one culture. When we thought over the date "03/08/2018," people from different parts of the world will give it different meanings.
It is understood as "8th of March 2018." in British English.
That, in European writing, is "3rd of August 2018 ."
The good news is that ISO's international date format provides an alternate. Another, more language-neutral choice for string literals that takes care of all these problems is the "YYYY-MM-DDThh:mm:ss" format, which is defined by ISO 8601. In this context, the year is denoted by "yyyy", the month by "mm" and the day by "dd". Therefore, the international ISO format for the date "8th of March 2018" is "2018-03-08." Thus, when it comes to a presentation of dates, the ISO standard will be the most appropriate choice.
Declare @date_time_value varchar(100) = '2019-03-28 21:02:04', and by using the next code, datetime2 @date_time_value = 126, where mm is formatted date formatted as [yyyy-mm-ddThh:mi:ss.mmm].Date format according to International Standard ISO 8601 (Figure 7)
Commenti per il miglioramento:
Sembra che quando si tratta di valori di data/ora, la comunità di solito si confonda, quindi spero che questo articolo possa chiarire la questione. Tipi di dati come varchar, char, nvarchar, nchar e text non dovrebbero mai essere usati per contenere date. Non recuperare mai informazioni di data formattate dal database. Memorizza sempre i valori di data in colonne di tipo DATE, DATETIME o, quando è richiesta una maggiore precisione, DATETIME2.
È possibile risolvere questo problema o "Errore di conversione durante la conversione di dati e ora" in SQL Server seguendo la guida e risolvendo la causa specifica dell'errore.
Se ti stai chiedendo come risolvere il problema? La funzione chestai cercando di usare si trova su una risorsa di rete che non èdisponibile? allora ecco la risposta migliore.
Nel nostro articolo di oggi vi mostriamo come risolvere in modosemplice l'errore di elaborazione "Tentativo di connessione L2TPfallito".
Se non sai come risolvere il problema del punto di ingressomancante della procedura ucrtbase.terminate, ecco una guida passo passoche ti aiuterà.
Per sapere come risolvere il problema "Le modifiche locali aiseguenti file verranno sovrascritte", ecco una guida passo passo che tiaiuterà.
Ecco un post completo in cui puoi imparare come risolvere ilproblema per cui il dispositivo o la risorsa (server DNS) nonrisponde.
Oggi vi forniamo una guida completa per imparare come correggere l'errore "Impossibile trovare questo elemento"
Se ti stai chiedendo come risolvere DEV ERROR 12502 in Call of Duty? Ecco una guida con la risposta migliore.
Per sapere come risolvere il problema dell'etichetta di errore Microsoft Office 58tm1, ecco una guida completa.