这是一个最佳实践问题,虽然我正在努力使用sql,但是2是相互关联的。我想在sql数据库中插入从早上6点开始的即将到来的24小时的日期和时间。
我认为最好在凌晨1点运行一个调度的SQL作业。这将创建一列和24行,例如20/03/2013 06:00到21/03/2013 05:00。
谢谢
答案 0 :(得分: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
其他数据库也有类似的结构。
这是假设它在相关日期的午夜之后运行。第二天,您必须在当前日期添加一天。
答案 1 :(得分: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;
答案 2 :(得分:0)
这适用于Postgres:
select timestamp '2013-03-30 06:00' + interval '1' hour * i
from generate_series(0,23) i;