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

Как извличате само дата от datetime в T-Sql?

Най-добрият начин е:

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

Това е така, защото вътрешно SQL Server съхранява всички дати като две цели числа, първото от които е ****броят дни*** от 1 януари 1900 г. (второто е частта от времето, съхранена като броя на секунди от полунощ. (секунди за SmallDateTime s или милисекунди за DateTime s)
Използването на горния израз е по-добро, защото избягва всички преобразувания, директно четене и достъп до това първо цяло число във вътрешно представяне на дати, без да се налага да извършва каквато и да е обработка... двете нули в горния израз (които представляват 1 януари 1900 г.), също се използват директно без обработка или преобразуване, защото съвпадат с вътрешното представяне на SQL сървъра на датата 1 януари 1900 г. точно както е представено (като цяло число)..

*ЗАБЕЛЕЖКА. Всъщност броят на границите на датата (полунощ), които трябва да преминете, за да стигнете от една дата до друга.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. SQL Insert тригер за актуализиране на INSERTED таблични стойности

  2. Използване на курсор в dbMail в sql сървър 2008

  3. Как да изпълните генериран скрипт (.sql файл) със схема и данни в SQL Server 2008

  4. Използване на LIKE в sp_executesql

  5. Лоша идея ли е да имаш „ИЛИ“ в състояние INNER JOIN?