Sqlserver
 sql >> база данни >  >> RDS >> Sqlserver

Как работи функцията за преобразуване на SQL при преобразуване на datetime в float?

DateTime често се представя като броене на дни от предварително определена дата (обикновено известна като епоха) в цялата част и процента на деня, изминал от полунощ в дробната част.

SQL Server не е изключение от това, така че преобразуването в Float има много смисъл. Ден 0 е 01 януари 1900 00:00:00 (AFAIK, в нито една конкретна часова зона, така че ще го считате за "местно време").

Така че, можете да опитате това:

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

И така, за вашите резултати са изминали 40183 дни от 01/01/1900 00:00:00 и 01/07/2010 00:00:00

Пояснение:Системи, подобни на Unix, използват различен подход за съхраняване на дати и времена:Секунди от епохата на Unix (1 януари 1970 00:00:00 UTC), което е по-известно като време на епохата.

[Редактиране]Форматът на датата на този отговор беше променен на формат ГГГГММДД на 20140416, след няколко нови години опит със SQL Server (и както каза @Damien в коментара си) това е единственият безопасен формат.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. OPENROWSET не приема променливи за своите аргументи (SQL Server)

  2. Добавяне на акаунт в база данни за поща към профил (T-SQL)

  3. Избиране на данни от два различни сървъра в SQL Server

  4. Какво наистина прави методът Statement.setFetchSize(nSize) в JDBC драйвер на SQL Server?

  5. SQL - Извикване на съхранена процедура за всеки запис