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

sql生成一个日期表的更多相关文章

  1. SQL 生成一个日期范围

    有时想按日或月生成一个序列,就像2014-1-1.2014-1-2.2014-1-3... 在sql server中可以写个函数来实现. /* 生成一个日期范围,如2014.01.2014.02... ...

  2. sql生成连续日期(年份、月份、日期)

    此随笔主在分享日常可能用到的sql函数,用于生成连续日期(年份.月份.日期) 具体的看代码及效果吧! -- ============================================= ...

  3. 获取html 中的内容 将前台的数据获取到后台 用 jquery 生成一个 form表单 提交数据

    使用js创建一个form表单 ,使用post上传到后台中 下面是代码.在获取html内容的时候使用了js节点来获取内容. parent:父节点.上一级的节点 siblings:兄弟节点.同一级别的节点 ...

  4. sql 生成开始日期到结束日期与开始日期的相差天数

     SELECT    CONVERT(VARCHAR(10), DATEADD(dd, number, '2015-10-25'), 120) AS dtDate          FROM      ...

  5. sql生成一个唯一标示

    IDNEWID() 插入一条: insert into W_1(id,account,password,uname,telnumber,imei) values(NEWID(),’xiaohong’, ...

  6. SQL - 创建一个学生表,要求有主键约束和非空约束

    CREATE TABLE [dbo].[Student] ( [ID] [int] NOT NULL, [Name] [nchar](10) NOT NULL, [Age] [int] NOT NUL ...

  7. MySQL 如何生成日期表

    MySQL 如何生成日期表 在开发过程中,经常会遇到统计问题,通常交易信息都不是连续的,此时,统计出来的数据都是不连续的,所以提前生成一个时期表,当没有交易数据的时候填充0,就可以了,下面是生成日期表 ...

  8. PowerBI 应用时间智能(生成日期表)

    简介 Power BI Desktop -是一款由微软发布的自助式商业智能工具,功能强大.易于使用.其中还可以通过微软云连多个数据源并且使用数据源来创建可视化表盘. 但是几乎所有的BI都需要展示如何随 ...

  9. Sql的分库分表,及优化

    对Sql细节优化 在sql查询中为了提高查询效率,我们常常会采取一些措施对查询语句进行sql优化,下面总结的一些方法,有需要的可以参考参考. 首先给大家介绍一下分库分表 分库分表 分库 垂直分库 业务 ...

随机推荐

  1. VBA基础之Excel 工作表(Sheet)的操作(二)

    二. Excel 工作表(Sheet)的操作1. Excel 添加工作表(Sheet) 方法名 参数 参数值 说明 Add Before 工作表名称 在指定的工作表前面插入新的工作表 After 工作 ...

  2. Jrebel 工具学习

    Jrebel 可快速实现热部署,节省了大量重启时间,提高了个人开发效率.网上可搜索到破解版. http://baike.baidu.com/link?url=wuzv7Wa7SMUKltJr-dyta ...

  3. thinkphp5学习记录一

    1 使用composer安装 composer create-project topthink/think=5.0.* tpblog --prefer-dist 2 配置环境vim /usr/loca ...

  4. windows批处理学习---01

    一. 标记符号: CR(0D) 命令行结束符 Escape(1B) ANSI转义字符引导符 Space() 常用的参数界定符 Tab() ; = 不常用的参数界定符 + COPY命令文件连接符 * ? ...

  5. django 使用json.dumps转换queryset的datatime报错问题解决

    最近在使用django做项目的时候想使用ajax来实现前后台数据的交互,但是在将数据库查询结果转换成json数据时,遇到时间格式的数据转换遇到问题,无法正确的进行转换,具体如下: 转换成json时使用 ...

  6. MySQL中的条件语句

    判断学生表中成绩是否小于60,将小于60的学生成绩列为不及格 学生表(student) 字段:姓名(name),学号(主键)(num),性别(sex),成绩(score) select *,if(sc ...

  7. usebean 使用语法

  8. hdu 1528 Card Game Cheater (二分匹配)

    Card Game Cheater Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others ...

  9. CentOS 压缩(打包)和解压

    1.tar命令 -c 创建压缩文件 -x 解开压缩文件 -t 查看压缩包内有哪些文件 -z 用 Gzip压缩或解压 -j 用 bzip2压缩或解压 -v 显示压缩或解压的过程 -f 目标文件名,在 f ...

  10. [洛谷P5091]【模板】欧拉定理

    题目大意:求$a^b\bmod m(a\leqslant10^9,m\leqslant10^6,b\leqslant10^{2\times10^7})$ 题解:扩展欧拉定理:$$a^b\equiv\b ...