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

Jak wyodrębnić tylko datę z datetime w T-Sql?

Najlepszy sposób to:

   SELECT DATEADD(day, DATEDIFF(Day, 0, @ADate), 0) 

Dzieje się tak, ponieważ wewnętrznie SQL Server przechowuje wszystkie daty jako dwie liczby całkowite, z których pierwsza to ****liczba dni*** od 1 stycznia 1900. (druga to część czasu, przechowywana jako liczba sekund od północy. (sekundy dla SmallDateTime s lub milisekundy dla DateTime s)
Użycie powyższego wyrażenia jest lepsze, ponieważ pozwala uniknąć wszystkich konwersji, bezpośrednio odczytując i uzyskując dostęp do pierwszej liczby całkowitej w wewnętrznej reprezentacji dat bez konieczności wykonywania jakiegokolwiek przetwarzania... dwa zera w powyższym wyrażeniu (które reprezentują 1 Styczeń 1900), są również bezpośrednio wykorzystywane bez przetwarzania lub konwersji, ponieważ odpowiadają one wewnętrznej reprezentacji SQL Server daty 1 stycznia 1900 dokładnie tak, jak została przedstawiona (jako liczba całkowita).

*NOTATKA. Właściwie to liczbę granic dat (północy), które musisz przekroczyć, aby przejść z jednej daty na drugą.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Nie można zaimportować danych z programu Excel 2003 do bazy danych za pomocą funkcji openrowset

  2. Jak przekonwertować ciąg na datę/godzinę w SQL Server za pomocą funkcji CONVERT()

  3. Narzędzia do zarządzania SQL Server 2017

  4. Mapowanie punktów geoprzestrzennych w płynnym NHibernate

  5. Jaki jest najlepszy sposób radzenia sobie z DBNull?