sql >> データベース >  >> RDS >> Sqlserver

2つの日付の間の中央値を見つけるSQL Server 2008

    セットを意味する場合 開始日と終了日を 1 つの列にまとめます:

    WITH t AS (
           SELECT invoice_no, invoice_start_date, invoice_end_date, check_date, status_code,
           FROM INVOICE_HEADER INNER JOIN
                INVOICE_HEADER_CUSTOM
                ON INVOICE_HEADER.invoice_id = INVOICE_HEADER_CUSTOM.invoice_id
           WHERE status_code <> 'REJECTED' AND 
                 Check_Date BETWEEN CONVERT(DATETIME, '2014-12-01 00:00:00', 102) AND
                 CONVERT(DATETIME, '2014-12-31 00:00:00', 102)
         ), 
         t2 as (
          select d, row_number() over (order by d) as seqnum,
                 count(*) over () as cnt
          from (select invoice_start_date as d from t
                union all
                select invoice_end_date as d from t
               ) t
         )
    select dateadd(day, datediff(hour, min(d), max(d)) / 2.0, min(d))
    from t2
    where 2 * seqnum in (cnt, cnt + 1, cnt + 2);
    


    1. MySQL-my.cnfのスキップロックは何をしますか?

    2. pdoexecuteで同じパラメータ値を複数回割り当てる

    3. PostgreSQLで列にint値とNULL値の両方が含まれている場合にテキストからintにキャストする方法

    4. PostgresHStoreエラー-不明な演算子