2013-03-22 43 views
0

這是一個最佳實踐問題,雖然我正在努力與SQL但2鏈接。我想從早上6點開始,將即將到來的24小時期間的日期和時間插入到sql數據庫中。插入數據庫的24小時時間段

我認爲最好是在即將到來的日子上午1點運行一個調度的SQL作業。這將創建一列和24行,例如20/03/2013 06:00至21/03/2013 05:00。

感謝

+2

這是非常依賴於你所使用的RDBMS,因爲他們都處理的日期/時間不同。 – 2013-03-22 12:45:40

回答

1

的問題是日期時間函數。下面是它如何工作的一個示例(在SQL Server):

insert into t(thedatetime) 
    select dateadd(hour, hrs.hr, cast(CAST(getdate() as DATE) as datetime)) 
    from (select 0 as hr union all select 1 union all select 2 union all select 3 union all 
      select 4 union all select 5 union all select 6 union all select 7 union all 
      select 8 union all select 9 union all select 10 union all select 11 union all 
      select 12 union all select 13 union all select 14 union all select 15 union all 
      select 16 union all select 17 union all select 18 union all select 19 union all 
      select 20 union all select 21 union all select 22 union all select 23 
     ) as hrs; 

在Oracle中,select將可能是:

select trunc(sysdate) + hrs.hr/24.0 

而且還有其他數據庫類似的結構。

這是假定它在當日午夜之後運行。對於第二天,您將不得不在當前日期添加一天。

+0

謝謝,我用你的查詢上面,我已經修改了一些,並創建一個SQL作業,讓它在正確的時間運行每一天。 – Silentbob 2013-03-25 14:26:27

0

這將工作爲ORACLE

SELECT To_date('22-03-2013 '||(CASE WHEN (6+(LEVEL-1))>12 THEN (CASE WHEN LEVEL>19 THEN (LEVEL-12-7) ELSE (6+(LEVEL-1))-12 END) ELSE (6+(LEVEL-1)) END)||':00:00','DD-MM-YYYY HH:MI:SS') 
FROM dual CONNECT BY LEVEL<=24; 
+0

@ Aspirant-這是一個很棒的查詢,但只返回12小時。你可以修改它... – Art 2013-03-22 13:35:34

+0

@藝術感謝!我已編輯查詢現在它將返回24小時 – Aspirant 2013-03-24 14:03:07

0

此作品在Postgres的:

select timestamp '2013-03-30 06:00' + interval '1' hour * i 
from generate_series(0,23) i;