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

Hvordan fungerer SQL's konverterfunktion, når datetime konverteres til float?

DateTime er ofte repræsenteret som en dagtælling fra en forudbestemt dato (generelt kendt som epoken) på heltalsdelen og procentdelen af ​​dagen, der er forløbet siden midnat på brøkdelen.

SQL Server er ikke undtagelsen fra dette, så konverteringen til Float giver meget mening. Dag 0 er 1. januar 1900 00:00:00 (AFAIK, ikke i nogen bestemt tidszone, så du skal betragte det som "lokal tid").

Så du kan prøve dette:

declare @ADate DateTime;
set @ADate = '19000101 00:00:00';
select CONVERT(float, @ADate);  --should print 0
set @ADate = '19000101 12:00:00';
select CONVERT(float, @ADate);  --should print 0.5
set @ADate = '19001231 06:00:00';
select CONVERT(float, @ADate);  --should print 364.25

Så for dine resultater er der gået 40183 dage siden 01/01/1900 00:00:00 og 01/07/2010 00:00:00

Præcisering:Unix-lignende systemer bruger en anden tilgang til at gemme dato og klokkeslæt:Sekunder siden Unix-epoken (1. januar 1970 00:00:00 UTC), som er mere kendt som epoketid.

[Rediger]Datoformatet på dette svar blev ændret til formatet ÅÅÅÅMMDD den 20140416, efter nogle nye års erfaring med SQL Server (og som @Damien sagde i sin kommentar) er dette det eneste sikre format.



  1. Forstå Oracles Java på Mac

  2. Sådan opretter du en tabel fra en anden tabel i SQL

  3. Oracle PL/SQL:Tjek, om BLOB eller CLOB er tom

  4. SQL-valgvindue omkring en bestemt række