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

T-SQL:Zaokrąglaj do najbliższego 15-minutowego interwału

Obecnie używam wariantu dateadd / datediff z datą zero (0). Przesyłanie nie jest wymagane:

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

GETDATE() jest dowolną datą i godziną.

Będzie to działać dla dat co najmniej do roku 5500 przed niepowodzeniem datediff z powodu przepełnienia. Jeśli jednak spróbujesz użyć drugiej celności, powyższe zadanie od razu się nie powiedzie.

Użycie innej ustalonej daty, takiej jak „2009-01-01” lub Dzisiejsza data (ostrzeżenie, bardziej brzydki SQL), naprawi to. Przyszła data również będzie działać. Dopóki ma część czasu 00:00:00, możesz na niej oprzeć inną datę i godzinę.

na przykład:zaokrąglij do najbliższych 30 sekund:

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. Jak automatycznie wygenerować unikalny identyfikator w SQL, taki jak UID12345678?

  2. Czy jest jakaś różnica między DECIMAL i NUMERIC w SQL Server?

  3. Limit czasu połączenia dla serwera SQL

  4. Techniki optymalizacji zapytań w SQL Server:5 najlepszych praktyk zwiększania wydajności zapytań

  5. Jak rzucić DateTime na czas?