要写一条SQL语句或者存储过程插入日期,也就是第个月每天的日期。
表与结构格式如下:表calendar列c_date存入格式:2011041920110420201104212011042220110423……每个月都以实际的天数插入,...
表与结构格式如下: 表calendar 列c_date
存入格式:
20110419
20110420
20110421
20110422
20110423
……
每个月都以实际的天数插入,插入是时间从20110427 到 20150427
急求!!!
表里就有一列c_date 数据类型为int 展开
存入格式:
20110419
20110420
20110421
20110422
20110423
……
每个月都以实际的天数插入,插入是时间从20110427 到 20150427
急求!!!
表里就有一列c_date 数据类型为int 展开
6个回答
展开全部
建一个存储过程
在里面写个循环就行了
datetime := 20120407--起点值
while datetime<20150428 loop --截止时间
sqlstr='insert into calendar(c_date) values('||datetime||')';
execute immediate sqlstr;
datetime=to_char(to_date(datetime,'yyyymmdd')+1,'yyyymmdd');--取下一天
end loop;
在里面写个循环就行了
datetime := 20120407--起点值
while datetime<20150428 loop --截止时间
sqlstr='insert into calendar(c_date) values('||datetime||')';
execute immediate sqlstr;
datetime=to_char(to_date(datetime,'yyyymmdd')+1,'yyyymmdd');--取下一天
end loop;
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐于2017-08-14
展开全部
Create proc uspTestDateInsert
@startDate datetime
,@endDate datetime
as
begin
while(@startDate<=@enddate)
begin
insert into dbo.calendar (c_date) values
(Convert(bigint,CONVERT(char(8),@startDate,112)))
set @startDate=DATEADD(day,1,@startdate)
end
end
--exec uspTestDateInsert '2009-02-12','2009-03-01'
select* from calendar
@startDate datetime
,@endDate datetime
as
begin
while(@startDate<=@enddate)
begin
insert into dbo.calendar (c_date) values
(Convert(bigint,CONVERT(char(8),@startDate,112)))
set @startDate=DATEADD(day,1,@startdate)
end
end
--exec uspTestDateInsert '2009-02-12','2009-03-01'
select* from calendar
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
这个可能需要区分数据库种类
DB2实现:
BEGIN
DECLARE V_DATE DATE;
V_DATE = DATE('2011-04-27');
WHILE(V_DATE >= DATE('2011-04-27') AND V_DATE < DATE('2015-04-27'))
DO
INSERT INTO calendar (c_date) VALUES(DECIMAL(V_DATE));
SET V_DATE = V_DATE + 1 DAY;
END WHILE;
END
DB2实现:
BEGIN
DECLARE V_DATE DATE;
V_DATE = DATE('2011-04-27');
WHILE(V_DATE >= DATE('2011-04-27') AND V_DATE < DATE('2015-04-27'))
DO
INSERT INTO calendar (c_date) VALUES(DECIMAL(V_DATE));
SET V_DATE = V_DATE + 1 DAY;
END WHILE;
END
更多追问追答
追问
[Err] 1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '= DATE(`2011-04-27`);
WHILE(V_DATE >= DATE('2011-04-27') AND V_DATE <' at line 4
追答
mysql中函数和存储过程的调用方式可能都与DB2不同,
语句的意思就是先定义一个date变量
然后赋值为('2011-04-27')的日期,
如果日期是在从20110427 到 20150427
那么插入日期信息并将日期+1天
具体函数和数据操作方式请自行转换为mysql格式
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
Create proc uspTestDateInsert
@startDate datetime
,@endDate datetime
as
begin
while(@startDate<=@enddate)
begin
insert into dbo.calendar (c_date) values
(Convert(bigint,CONVERT(char(8),@startDate,112)))
set @startDate=DATEADD(day,1,@startdate)
end
end
--exec uspTestDateInsert '2009-02-12','2009-03-01'
select* from calendar
@startDate datetime
,@endDate datetime
as
begin
while(@startDate<=@enddate)
begin
insert into dbo.calendar (c_date) values
(Convert(bigint,CONVERT(char(8),@startDate,112)))
set @startDate=DATEADD(day,1,@startdate)
end
end
--exec uspTestDateInsert '2009-02-12','2009-03-01'
select* from calendar
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
输入变量为 月份 4位
变量1 月初
变量2 月末
将 月初,月末 变成数字类型
插入 当 值大于 月初,小于月末的时候插入
变量1 月初
变量2 月末
将 月初,月末 变成数字类型
插入 当 值大于 月初,小于月末的时候插入
更多追问追答
追问
能不能写出来
追答
你用的是什么数据库
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询