Sqlserver
 sql >> Baza danych >  >> RDS >> Sqlserver

Jaka jest specyfikacja formatu daty szesnastkowej w serwerze SQL?

DATE typ jest przechowywany wewnętrznie jako 3-bajtowa liczba całkowita, reprezentująca liczbę dni od 1 stycznia 0001.

Wartość szesnastkowa, którą masz, jest w formacie little-endian, więc musisz zmienić ją na big-endian, zanim będziesz mogła użyć jej w C# DateTime obliczenia:

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. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Jak usunąć kolumnę z ograniczeniem w SQL Server

  2. Przywracanie głównej bazy danych programu SQL Server

  3. Naucz się przechowywać i analizować dokumenty w systemie plików Windows za pomocą wyszukiwania semantycznego SQL Server — część 1

  4. Dodaj login i połącz się z SQL za pomocą uwierzytelniania SQL Server

  5. Czy klucz obcy może mieć wartość NULL i/lub być duplikatem?