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

Come trasmettere DateTime a Time

Time non viene memorizzato con il suo formato di visualizzazione in SQL Server.
Pertanto, dal punto di vista dell'utente, puoi dire che non ha formato.
Ovviamente, non è del tutto accurato poiché ha un formato di archiviazione , ma come utente medio non puoi davvero usarlo.
Questo vale per tutti i tipi di dati di data e ora:
Date , DateTimeOffset , DateTime2 , SmallDateTime , DateTime e Time .

Se hai bisogno di un formato, non devi trasmettere a time ma a un char . Usa Convert per ottenere il char hai bisogno di:

SELECT CONVERT(char(10), [time], 108) as CSTTime 

Se sei interessato, ecco alcuni dati di base:

In questo articolo pubblicato nel 2000 lo scrittore spiega in modo approfondito come SQL Server tratta le date e le ore. Dubito che qualcosa di significativo sia cambiato tra il 2000 e il 2015 nel modo in cui SQL Server archivia date , time e datetime valori internamente.

Ecco le citazioni rilevanti, se non vuoi leggerle tutte:

In che modo SQL Server archivia internamente le date? Utilizza 8 byte per memorizzare un valore datetime, i primi 4 per la data e i secondi 4 per l'ora. SQL Server può interpretare entrambi i set di 4 byte come numeri interi.
........
........
SQL Server archivia il secondo numero intero per l'ora come il numero di tick dell'orologio dopo la mezzanotte. Un secondo contiene 300 tick, quindi un tick equivale a 3,3 millisecondi (ms).

dal time è effettivamente memorizzato come un numero intero di 4 byte, in realtà non ha un formato come parte integrante del tipo di dati.

Potresti anche voler consultare questo articolo per una spiegazione più dettagliata con esempi di codice.