sql生成一个日期表
2013-09-17 16:42
489 查看
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
-- =============================================
-- Author: lidongbo
-- Create date: <Create Date,,>
-- Description: 生成日期表,为营业统计使用
-- =============================================
CREATE PROCEDURE CreateDateTable
-- Add the parameters for the stored procedure here
@p_startTime datetime,
@p_endTime datetime
AS
BEGIN
/************生成时间临时表********/
create table #etTtime_TempTable (
[ID] [int] IDENTITY (1, 1) NOT NULL PRIMARY KEY,
[日期列] DateTime,
[门店编号列] varchar(50)
)
declare @etKdd int,@etKmmStr nvarchar(13),@etKddStr nvarchar(13),@etKwwStr nvarchar(13),@etKqqStr nvarchar(13),@start_Time datetime,@end_Time datetime,@type_Time int,@mdbh varchar(50)
--set @start_Time='2010-01-01'/*设置起始时间*/
--set @end_Time='2100-12-31'/*设置终止时间*/
set @start_Time=@p_startTime/*设置起始时间*/
set @end_Time=@p_endTime/*设置终止时间*/
set @type_Time=1 /*生成类型 1为天 2为周 3为月 4为季度 5为年*/
set @mdbh='zlwy4000480006'
WHILE @start_Time<@end_Time /**/
begin
set @etKdd=datepart(dd,@start_Time)
set @etKddStr=cast(@etKdd as nvarchar(13))
set @etKdd=datepart(mm,@start_Time)
set @etKmmStr=cast(@etKdd as nvarchar(13))
set @etKdd=datepart(ww,@start_Time)
set @etKwwStr=cast(@etKdd as nvarchar(13))
set @etKdd=datepart(qq,@start_Time)
set @etKqqStr=cast(@etKdd as nvarchar(13))
if @type_Time=1
Begin
INSERT INTO #etTtime_TempTable (日期列,门店编号列) VALUES (cast(datepart(yy,@start_Time)as nvarchar(13))+'-'+@etKmmStr+'-'+@etKddStr,@mdbh)
SET @start_Time=DATEADD(dd,1,@start_Time)
End
if @type_Time=2
Begin
INSERT INTO #etTtime_TempTable (日期列,门店编号列) VALUES (cast(datepart(yy,@start_Time)as nvarchar(13))+'-'+@etKwwStr,@mdbh)
SET @start_Time=DATEADD(ww,1,@start_Time)
End
if @type_Time=3
Begin
INSERT INTO #etTtime_TempTable (日期列,门店编号列) VALUES (cast(datepart(yy,@start_Time)as nvarchar(13))+'-'+@etKmmStr,@mdbh)
SET @start_Time=DATEADD(mm,1,@start_Time)
End
if @type_Time=4
Begin
INSERT INTO #etTtime_TempTable (日期列,门店编号列) VALUES (cast(datepart(yy,@start_Time)as nvarchar(13))+'-'+@etKqqStr,@mdbh)
SET @start_Time=DATEADD(qq,1,@start_Time)
End
if @type_Time=5
Begin
INSERT INTO #etTtime_TempTable (日期列,门店编号列) VALUES (cast(datepart(yy,@start_Time)as nvarchar(13)),@mdbh)
SET @start_Time=DATEADD(yy,1,@start_Time) /*循环开始时间加1 直到等于设置的终止时间*/
End
Continue
End
/*查询临时表*/
--Select * From #etTtime_TempTable
--delete from datetable
insert into datetable select id, 日期列 from #etTtime_TempTable
/*删除临时表*/
Drop Table #etTtime_TempTable
END
GO
GO
SET QUOTED_IDENTIFIER ON
GO
-- =============================================
-- Author: lidongbo
-- Create date: <Create Date,,>
-- Description: 生成日期表,为营业统计使用
-- =============================================
CREATE PROCEDURE CreateDateTable
-- Add the parameters for the stored procedure here
@p_startTime datetime,
@p_endTime datetime
AS
BEGIN
/************生成时间临时表********/
create table #etTtime_TempTable (
[ID] [int] IDENTITY (1, 1) NOT NULL PRIMARY KEY,
[日期列] DateTime,
[门店编号列] varchar(50)
)
declare @etKdd int,@etKmmStr nvarchar(13),@etKddStr nvarchar(13),@etKwwStr nvarchar(13),@etKqqStr nvarchar(13),@start_Time datetime,@end_Time datetime,@type_Time int,@mdbh varchar(50)
--set @start_Time='2010-01-01'/*设置起始时间*/
--set @end_Time='2100-12-31'/*设置终止时间*/
set @start_Time=@p_startTime/*设置起始时间*/
set @end_Time=@p_endTime/*设置终止时间*/
set @type_Time=1 /*生成类型 1为天 2为周 3为月 4为季度 5为年*/
set @mdbh='zlwy4000480006'
WHILE @start_Time<@end_Time /**/
begin
set @etKdd=datepart(dd,@start_Time)
set @etKddStr=cast(@etKdd as nvarchar(13))
set @etKdd=datepart(mm,@start_Time)
set @etKmmStr=cast(@etKdd as nvarchar(13))
set @etKdd=datepart(ww,@start_Time)
set @etKwwStr=cast(@etKdd as nvarchar(13))
set @etKdd=datepart(qq,@start_Time)
set @etKqqStr=cast(@etKdd as nvarchar(13))
if @type_Time=1
Begin
INSERT INTO #etTtime_TempTable (日期列,门店编号列) VALUES (cast(datepart(yy,@start_Time)as nvarchar(13))+'-'+@etKmmStr+'-'+@etKddStr,@mdbh)
SET @start_Time=DATEADD(dd,1,@start_Time)
End
if @type_Time=2
Begin
INSERT INTO #etTtime_TempTable (日期列,门店编号列) VALUES (cast(datepart(yy,@start_Time)as nvarchar(13))+'-'+@etKwwStr,@mdbh)
SET @start_Time=DATEADD(ww,1,@start_Time)
End
if @type_Time=3
Begin
INSERT INTO #etTtime_TempTable (日期列,门店编号列) VALUES (cast(datepart(yy,@start_Time)as nvarchar(13))+'-'+@etKmmStr,@mdbh)
SET @start_Time=DATEADD(mm,1,@start_Time)
End
if @type_Time=4
Begin
INSERT INTO #etTtime_TempTable (日期列,门店编号列) VALUES (cast(datepart(yy,@start_Time)as nvarchar(13))+'-'+@etKqqStr,@mdbh)
SET @start_Time=DATEADD(qq,1,@start_Time)
End
if @type_Time=5
Begin
INSERT INTO #etTtime_TempTable (日期列,门店编号列) VALUES (cast(datepart(yy,@start_Time)as nvarchar(13)),@mdbh)
SET @start_Time=DATEADD(yy,1,@start_Time) /*循环开始时间加1 直到等于设置的终止时间*/
End
Continue
End
/*查询临时表*/
--Select * From #etTtime_TempTable
--delete from datetable
insert into datetable select id, 日期列 from #etTtime_TempTable
/*删除临时表*/
Drop Table #etTtime_TempTable
END
GO
相关文章推荐
- T-SQL 生成一个简易的 公历年历 T-SQL 含日期所在月及年的周次
- T-SQL 生成一个简易的 公历年历 T-SQL 含日期所在月及年的周次
- SQL 生成一个日期范围
- 生成日期维表的一个SQL语句
- T-SQL 生成一个简易的 公历年历 T-SQL 含日期所在月及
- [转]T-SQL 生成一个简易的 公历年历 T-SQL 含日期所在月及年的周次
- T-SQL生成一个简易的公历年历T-SQL含日期所在月及年的周次
- 一个表t,有个日期列d。需要写SQL,输出日期d。排序要求:d大于当前日期的在小于的之前,距离当前日期越进的在远的之前 。
- 第一个文章,今天比较兴奋啊! 给大家一个关于SQL复合查询的文章(动态生成多个where条件)
- 关于enum ,调用webservice,用户控件与主页面之间的交互,datsource属性,net面试题,反射类生成sql语句,URl重写一个小实例
- 一个考生表,现在要随机生成考号,遇到sql疑问,请教各位大虾
- 写一个程序,能够动态生成多条插入语句如:insert into MyStudents values(“人名1”,年龄,‘男’,分数1,分数2)。将生成的插入语句输出到记事本文件 SQLStr.txt中
- oracle中用SQL实现两个日期间的日期形成一个数据集
- 一个改进的ASP生成SQL命令字符串类的代码[已测]
- 用SQL生成一个固定范围内的随机数
- SQL学习----日期流水号生成
- sql server生成1000-9999之间的随机数或一个日期区间随机日期
- 发布一个类似Subsonic语法的动态生成SQL语句,并可以返回相应实体类的一个组件
- SQL高级语句-Auto increment(自增) 会在新记录插入表中时生成一个唯一的数字。
- mybatis if 动态生成SQL的一个注意点 parameterType="map"