Non riesco a capire da the documentation perché SQL Server analizza un testo in un formato diverso dallo stile specificato.Perché SQL Server converte VARCHAR in DATETIME utilizzando uno stile non valido?
Indipendentemente dal fatto che fornisco il testo nel formato previsto:
SELECT CONVERT(DATETIME, N'20150601', 112)
o non corretti formato (per stile 113
):
SELECT CONVERT(DATETIME, N'20150601', 113)
I risultati sono gli stessi: 2015-06-01 00:00:00.000
mi si aspetterebbe quest'ultimo non riuscire a convertire la data (correttamente).
Quali regole vengono utilizzate quando si tenta di convertire un VARCHAR
in DATETIME
? Cioè perché il secondo (stile di formato errato) analizza correttamente la data?
EDIT: Sembra che non sia stato abbastanza chiaro. Lo stile 113
dovrebbe prevedere dd mon yyyy hh:mi:ss:mmm(24h)
ma converte felicemente i valori nel formato yyyymmdd
per qualche motivo.
Si sta restituendo il DATETIME, non una rappresentazione testuale del DATETIME, quindi lo stile è irrilevante. Se vuoi vedere lo stile fare qualcosa, converti nuovamente il DATETIME in un VARCHAR, ad es. SELECT CONVERT (VARCHAR (20), CONVERT (DATETIME, N'20150601 '), 113) –
Forse una conversione implicita sta avvenendo prima della conversione effettiva? – Blim
Eliminata la mia risposta, ma 'Quando espressione è un tipo di dati data o ora, lo stile può essere uno dei valori mostrati nella seguente tabella'. Hai ** non ** ottenuto un'espressione datetime. – Mackan