sql >> Databáze >  >> RDS >> Sqlserver

Dotaz na pole datetime s milisekundami dává na serveru SQL nesprávný výsledek

SQL Server ukládá část času jako číslo 1/300 druhé dlouhé tikání od půlnoci.

23:59:59.999 se zaokrouhlí na nejbližší dílek, který je shodou okolností 00:00:00.000 následujícího dne.

SELECT  CAST(CAST('2009-12-01 00:00:00.000' AS DATETIME) AS BINARY(8)),
        CAST(CAST('2009-12-01 23:59:59.997' AS DATETIME) AS BINARY(8)),
        CAST(CAST('2009-12-01 23:59:59.999' AS DATETIME) AS BINARY(8))



0x00009B8F 00000000    0x00009B8F 018B81FF    0x00009B90 00000000

V první hodnotě, část data, 0x9B8F (39823 ) je počet dní od Jan 1st, 1900 a časová část 0 , je počet tiků od půlnoci.

Ve druhé hodnotě 0x018B81FF (25919999 nebo 24 * 60 * 60 * 300 - 1 ) je maximální možný počet tiků od půlnoci.

Konečně třetí hodnota má 0 v části času a části data se zvýšily o jedna.



  1. Jak napsat kombinatorickou funkci v postgresu?

  2. MySQL UPSERT bez ON DUPLICATE KEY

  3. PHP MySQL INSERT se nezdaří kvůli jedinečnému omezení

  4. Ukládání obrázků na SQL Server?