如何快速生成一张这样的表

风之影子 2010-06-07 03:34:14
给两个时间变量如:2010-05-01 与2010-05-30号

不用循环进行insert into插入

如何快速生成一样以下结果的表。


Column_A Column_B Column_C Column_D
0 0 0 2010-05-01 00:00:00
0 0 0 2010-05-01 02:00:00
0 0 0 2010-05-01 03:00:00
0 0 0 2010-05-01 04:00:00
0 0 0 2010-05-01 05:00:00
0 0 0 2010-05-01 06:00:00
0 0 0 2010-05-01 07:00:00

一直到2010-05-30

说明:列A,B,C分别为0值的int型,列D为时间以每分钟自增的值。最终(如果变量范围是一天)一天生成1440条数据记录
while循环语句时间太长(因为在生成过程中日期不断的进行计算,从而降低了插入的性能)。

...全文
124 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
风之影子 2010-06-07
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 htl258 的回复:]
楼主提供的效果只能说明是手误,通过以下两点证据来证实:
1.列D为时间以每分钟自增的值
2.最终(如果变量范围是一天)一天生成1440条数据记录
[/Quote]

谢了高手。
htl258_Tony 2010-06-07
  • 打赏
  • 举报
回复
[Quote=引用 9 楼 wlmstar 的回复:]
引用 2 楼 htl258 的回复:

SQL code
DECLARE @t1 DATETIME,@t2 DATETIME

SELECT @t1='2010-05-01',@t2='2010-05-30'

SELECT TOP(1440*DATEDIFF(dd,@t1,@t2+1))
0 Column_A,
0 Column_B,
0 Column_C,
DATEADD……
[/Quote]
--量不够自己加
DECLARE @t1 DATETIME,@t2 DATETIME

SELECT @t1='2010-05-01',@t2='2010-05-30'

SELECT TOP(1440*DATEDIFF(dd,@t1,@t2+1))
0 Column_A,
0 Column_B,
0 Column_C,
DATEADD(mi, ROW_NUMBER()OVER(ORDER BY a.id)-1, @t1) Column_D
FROM sysobjects a,sysobjects b,syscolumns c,syscolumns d
wlmstar 2010-06-07
  • 打赏
  • 举报
回复
更正,是平方和>=1440*DATEDIFF(dd,@t1,@t2+1)
不好意思
wlmstar 2010-06-07
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 htl258 的回复:]

SQL code
DECLARE @t1 DATETIME,@t2 DATETIME

SELECT @t1='2010-05-01',@t2='2010-05-30'

SELECT TOP(1440*DATEDIFF(dd,@t1,@t2+1))
0 Column_A,
0 Column_B,
0 Column_C,
DATEADD(mi, ROW_NUMB……
[/Quote]

顶一个,学习了
不过提醒楼主要注意,你的sysobjects表的行数的平方值要大于等于1440,否则就达不到那么多量了。
或者楼主可以换一个其他表,满足这个条件即可
FCU 2010-06-07
  • 打赏
  • 举报
回复
要实现的功能真是多样性啊
feilniu 2010-06-07
  • 打赏
  • 举报
回复
参看该帖第一条。
htl258_Tony 2010-06-07
  • 打赏
  • 举报
回复
楼主提供的效果只能说明是手误,通过以下两点证据来证实:
1.列D为时间以每分钟自增的值
2.最终(如果变量范围是一天)一天生成1440条数据记录
shuai13869896140 2010-06-07
  • 打赏
  • 举报
回复
关注下,楼上貌似和lz要的不是一样的效果```
GOODlivelife 2010-06-07
  • 打赏
  • 举报
回复
[Quote=引用楼主 libinguest 的回复:]
给两个时间变量如:2010-05-01 与2010-05-30号

不用循环进行insert into插入

如何快速生成一样以下结果的表。


Column_A Column_B Column_C Column_D
0 0 0 2010-05-01 00:00:00
0 0 0 2010-05-01 02:00:00

0 0 0 2010-05-01 03:00:……
[/Quote]

为啥没有01?
htl258_Tony 2010-06-07
  • 打赏
  • 举报
回复
Column_A    Column_B    Column_C    Column_D
----------- ----------- ----------- -----------------------
0 0 0 2010-05-01 00:00:00.000
0 0 0 2010-05-01 00:01:00.000
0 0 0 2010-05-01 00:02:00.000
0 0 0 2010-05-01 00:03:00.000
0 0 0 2010-05-01 00:04:00.000
。。。。。。。。
0 0 0 2010-05-30 23:56:00.000
0 0 0 2010-05-30 23:57:00.000
0 0 0 2010-05-30 23:58:00.000
0 0 0 2010-05-30 23:59:00.000

(43200 行受影响)
htl258_Tony 2010-06-07
  • 打赏
  • 举报
回复
DECLARE @t1 DATETIME,@t2 DATETIME

SELECT @t1='2010-05-01',@t2='2010-05-30'

SELECT TOP(1440*DATEDIFF(dd,@t1,@t2+1))
0 Column_A,
0 Column_B,
0 Column_C,
DATEADD(mi, ROW_NUMBER()OVER(ORDER BY a.id)-1, @t1) Column_D
FROM sysobjects a,sysobjects b
jwdream2008 2010-06-07
  • 打赏
  • 举报
回复
Up!

22,210

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 疑难问题
社区管理员
  • 疑难问题社区
  • 尘觉
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧