V současné době k tomu používám variantu dateadd / datediff s nulovým (0) datem. Není vyžadováno odesílání:
select dateadd(minute, datediff(minute,0,GETDATE()) / 15 * 15, 0)
GETDATE() je jakékoli datum a čas.
To bude fungovat pro data alespoň do roku 5500 před selháním datediff z důvodu přetečení. Pokud se však pokusíte použít druhou přesnost, výše uvedená okamžitě selže.
Použití jiného pevného data, jako je '2009-01-01', nebo Dnešní datum (varování, ošklivější SQL) to vyřeší. Budoucí datum bude také fungovat. Pokud má časovou část 00:00:00, můžete na něm založit další datum a čas.
například:zaokrouhlete na nejbližších 30 sekund:
select dateadd(second, round(datediff(second, '2010-01-01', GETDATE()) / 30.0, 0) * 30, '2010-01-01');