2015-04-06 20 views
5

Quali sono le implicazioni dell'utilizzo di DateTime2 di SQL Server con una precisione pari a 0 per rappresentare una data anziché il campo Data incorporato.SQL Server DateTime2 (0) rispetto alla data

In entrambi i casi, la mia preoccupazione è quella di evitare le voci accidentali del tempo, ma ci sono considerazioni sulla conservazione o sulle prestazioni che dovrei prendere in considerazione?

+2

'DateTime2 (0)' consente comunque di memorizzare il tempo. 'Data' non lo farà. – JodyT

+0

Intendi DateTime2 v/s DateTime? DateTime2 aggiunge più [precisione] (https://technet.microsoft.com/en-us/library/bb677335%28v=sql.105%29.aspx) alla parte temporale del valore .. – abhi

+0

@abhi, no. Ho visto una differenza in un progetto che stavo mantenendo e mi chiedo perché la differenza. –

risposta

6

Non funzionerà. Secondo MSDN, la dimensione minima di Datetime2 è di sei byte e conterrà hh: mm: ss in modo che possa contenere e includerà un componente orario (valore predefinito di mezzanotte). Come altri soccorritori hanno notato, è necessario utilizzare un tipo di data per garantire che la porzione di tempo non venga salvata e occuperà tre byte.

https://technet.microsoft.com/en-us/library/bb677335%28v=sql.105%29.aspx

13

DateTime2(0) memorizzerà datetime senza valori decimali cioè YYYY-MM-DD hh:mm:ss

SELECT CONVERT(DateTime2(0) , GETDATE()) 
RESULT: 2015-04-06 20:47:17 

La memorizzazione dei dati come date saranno uniche date memorizzare cioè YYYY-MM-DD senza valori di tempo.

SELECT CONVERT(Date , GETDATE()) 
RESULT: 2015-04-06 

Se siete interessati solo a date quindi utilizzare DATE tipo di dati.

DATETIME2 utilizzerà 6 bytes per precisioni less than 3 e DATE userà 3 bytes.

La data è metà della dimensione di DATETIME (0), quindi funzionerà meglio poiché il server SQL elaborerà meno dati e farà risparmiare spazio su disco.

Problemi correlati