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

SYSDATETIME() срещу GETDATE() в SQL Server:Каква е разликата?

SQL Server има куп функции, които връщат текущата дата/час. Две от тях са GETDATE() и SYSDATETIME() функции.

На пръв поглед изглежда, че тези две функции правят едно и също нещо – получават текущата дата и час от операционната система на компютъра, на който се изпълнява екземплярът на SQL Server.

Има обаче фина разлика между двете.

Разликата? Типът на връщаната стойност

Основната разлика между GETDATE() и SYSDATETIME() е във вида на връщаната стойност.

  • GETDATE() връща datetime стойност.
  • SYSDATETIME() връща datetime2(7) стойност.

Това означава, че SYSDATETIME() има по-голяма точност до части от секунди от GETDATE() .

И двете функции получават текущата дата и час от операционната система на компютъра, на който се изпълнява екземплярът на SQL Server, но дробната точност е различна.

Пример

Ето пример за демонстриране на различните стойности, които се връщат за всяка функция:

SELECT 
    GETDATE() AS GETDATE,
    SYSDATETIME() AS SYSDATETIME;

Резултат:

+-------------------------+-----------------------------+
| GETDATE                 | SYSDATETIME                 |
|-------------------------+-----------------------------|
| 2018-06-13 02:48:27.653 | 2018-06-13 02:48:27.6542371 |
+-------------------------+-----------------------------+

Така че, както споменахме, SYSDATETIME() , който връща datetime2(7) стойност, има по-голяма дробна точност от  GETDATE() , който връща datetime стойност.

datetime2 типът данни също има по-голям диапазон от дати и по избор, определена от потребителя точност.

Кой да използвам?

Microsoft препоръчва да използваме datetime2 с нашите стойности за дата/час. Този тип данни е в съответствие със стандарта SQL и е по-преносим от datetime .

Затова използвайте SYSDATETIME() освен ако нямате причина да не го правите.


  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 Server 2016 Enterprise Edition

  2. Как да изберете данни на таблица от друга база данни в SQL Server?

  3. SYSUTCDATETIME() срещу GETUTCDATE() в SQL Server:Каква е разликата?

  4. Как да генерирате тестови данни в SQL Server

  5. ODBC скаларни функции за дата и час в SQL Server (T-SQL примери)