sql >> Databasteknik >  >> RDS >> Sqlserver

Behöver beräkna med avrundad tid eller datum siffra i sql server

Du kan använda samma teknik för att runda av till valfritt datumintervall. Detta förlitar sig på heltalsdivision

SELECT
    DATEADD(minute, DATEDIFF(minute, 0, foo), 0),              -- whole minute
    DATEADD(minute, DATEDIFF(minute, 0, foo) / 5 * 5, 0),      -- 5 minute
    DATEADD(minute, DATEDIFF(minute, 0, foo) / 10 * 10, 0),    -- 10 minute
    DATEADD(minute, DATEDIFF(minute, 0, foo) / 15 * 15, 0),    -- 15 minute
    DATEADD(minute, DATEDIFF(minute, 0, foo) / 30 * 30, 0),    -- 30 minute

    DATEADD(hour, DATEDIFF(hour, 0, foo), 0),                  -- whole hour
    DATEADD(hour, DATEDIFF(hour, 0, foo) / 2 * 2, 0),          -- 2 hour

    DATEADD(day, DATEDIFF(day, 0, foo), 0),                    -- whole day
    DATEADD(day, DATEDIFF(day, 0, foo) / 5 * 5, 0),            -- 5 day
    DATEADD(day, DATEDIFF(day, 0, foo) / 10 * 10, 0),          -- 10 day

    DATEADD(month, DATEDIFF(month, 0, foo), 0),                -- whole month
    DATEADD(month, DATEDIFF(month, 0, foo) / 2 * 2, 0)         -- 2 month
FROM
    @dates;


  1. MySQL-felkod:1005

  2. Oracle:Fungerar en 10g oracle-klient med en 11g-server?

  3. är det bättre att escape/koda användarinmatningen innan du lagrar den i databasen eller att lagra den som den är i databasen och escape den under hämtning?

  4. Fel vid användning av INSERT INTO-tabellen PÅ DUPLICATE KEY, med en for loop-array