sql >> Database >  >> RDS >> Sqlserver

Wat is de specificatie van het hexadecimale datumformaat in de SQL-server?

De DATE type wordt intern opgeslagen als een geheel getal van 3 bytes, dat staat voor het aantal dagen sinds 1 januari 0001.

De hexadecimale waarde die u heeft, is in little-endian-indeling, dus u moet deze in big-endian omzetten voordat u deze in C# kunt gebruiken DateTime berekeningen:

string hexString = "38320B00";

// convert the first 6 characters to bytes and combine them into an int
// we can ignore the final two characters because the DATE type is a
// 3-byte integer - the most-significant-byte should always be zero
int days = byte.Parse(hexString.Substring(0, 2), NumberStyles.HexNumber)
    | byte.Parse(hexString.Substring(2, 2), NumberStyles.HexNumber) << 8
    | byte.Parse(hexString.Substring(4, 2), NumberStyles.HexNumber) << 16;

DateTime dt = new DateTime(1, 1, 1).AddDays(days);

Console.WriteLine(dt);    // 12/12/2009 00:00:00



  1. Verschillende manieren om de SQL CONVERT-datumfunctie te gebruiken

  2. MYSQL selecteer wederzijdse vrienden

  3. Een database handmatig comprimeren en repareren in Access 2016

  4. PDO-equivalent van mysql_num_rows of mssql_num_rows