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

T-SQL:Закръгля до най-близкия интервал от 15 минути

В момента използвам вариант dateadd / datediff с нулева (0) дата за това. Не се изисква кастинг:

select dateadd(minute, datediff(minute,0,GETDATE()) / 15 * 15, 0)

GETDATE() е каквато и да е вашата дата и час.

Това ще работи за дати най-малко до 5500 година, преди датата да се провали поради препълване. Въпреки това, ако се опитате да използвате втора точност, по-горе ще се провали веднага.

Използването на друга фиксирана дата, като '2009-01-01', или днешна дата (предупреждение, по-грозен SQL) ще коригира това. Бъдеща дата също ще работи. Стига да има времева част от 00:00:00, можете да базирате друга дата и час на него.

например:закръглете до най-близките 30 секунди:

select dateadd(second, round(datediff(second, '2010-01-01', GETDATE()) / 30.0, 0) * 30, '2010-01-01');


  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 SHOWPLAN_TEXT

  2. Как да се справим с имената на колони в SQL, които изглеждат като SQL ключови думи?

  3. Функция за разделяне в SQL Server 2008

  4. MultipleActiveResultSets=Истински или множество връзки?

  5. Обединяване на припокриващи се интервали от дата