Sqlserver
 sql >> Database >  >> RDS >> Sqlserver

Modifica il formato della data predefinito memorizzato in un database

Questo è il punto cruciale della confusione. Solo perché SQL Server Management Studio viene visualizzato una colonna datetime in quel formato non significa che sia memorizzata COME TESTO AAAA-MM-GG hh:mm:ss.zzz. È memorizzato come binario, qualcosa come 0000101000001010..

Le tue date vengono archiviate in SQL Server come una serie di byte (bit in realtà) che costituiscono un valore numerico che è un offset da 1900-01-01. Non esiste un formato intrinseco alle date. Quello a cui ti riferisci è che SSMS per impostazione predefinita mostra [visualizza] colonne datetime come AAAA-MM-GG hh:mm:ss.zzz. Se utilizzi uno strumento di programmazione front-end, anche questo potrebbe imporre un formato [visualizzazione] predefinito a meno che tu non ne abbia richiesto un altro.

Non c'è assolutamente alcun modo per fare in modo che SSMS mostri i dati datetime in un altro formato tramite opzioni o configurazione. Se necessario, è necessario aggiornare la query SQL per convertire la colonna datetime in una colonna VARCHAR contenente l'equivalente TEXTual in un formato particolare. Ciò può essere utile in SSMS, ma sarebbe negativo se utilizzato come origine dati per GUI/app Web front-end, poiché i valori non sono datetime e non possono essere utilizzati per il calcolo dell'intervallo, la rappresentazione grafica, i controlli legati alla data ecc.

Guarda questo esempio di visualizzazione dell'ora (getdate()) come AAAA-GG-MM, un formato molto insolito. Si noti che il campo/variabile della data deve essere utilizzato due volte:

select stuff(convert(char(7), getdate(), 120), 5, 0, '-' + convert(char(2), getdate(), 3))