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. BZOJ 4176 Lucas的数论 莫比乌斯反演+杜教筛

    题意概述:求,n<=10^9,其中d(n)表示n的约数个数. 分析: 首先想要快速计算上面的柿子就要先把d(ij)表示出来,有个神奇的结论: 证明:当且仅当a,b没有相同的质因数的时候我们统计其 ...

  2. 关于LNMP常见问题和性能方面的个人理解

    简单整理,自己做备忘的,不为其他作任何参考- PHP程序 1.开启慢日志,过滤超时时间为1s的方法,针对性优化,可以通过添加缓存方式解决. 2.过滤access日志,统计哪些请求较多较为频繁,是否合理 ...

  3. apache访问403错误

    1.排查selinux 2.目录权限 3.WEB主目录是否正确

  4. 欢迎来怼-Alpha周(2017年10月19)贡献分配规则和分配结果

    .从alpha周(2017年10月19日开始的2周)开始,提高贡献分比重. 贡献分 : 团队分 = 1 : 5 教师会在核算每位同学总分时按比例乘以系数. 每位同学带入团队贡献分10分,如果团队一共7 ...

  5. Launch Image消失时添加动画

    CGSize viewSize = self.window.bounds.size; NSString *viewOrientation = @"Portrait"; //横屏请设 ...

  6. Sqoop使用笔记(转载)

    Sqoop是Apache顶级项目,主要用来在Hadoop和关系数据库中传递数据.通过sqoop,可以方便的将数据从关系数据库导入到HDFS,或将数据从HDFS导出到关系数据库. 关于Sqoop 官网S ...

  7. python Django框架接入微信公众平台

    1.在接入微信公众平台之前,需要在微信公众平台配置好基本信息,如下: 这个时候点击“提交”按钮,会提示“Token校验失败”,不要着急,这是必然会出现的现象,先不要退出页面,保留各项输入的数据,按第二 ...

  8. tcp中的发送窗口是啥意思?

    初始的三次握手: 02:52:36.585412 IP 127.0.0.1.59764 > 127.0.0.1.8000: Flags [S], seq 3800457532, win 4369 ...

  9. 第三章 AOP

    什么是AOP AOP的编写方式 什么是AOP? 是一种面向切面的思想,关注的是切面中的相似功能,将这些功能抽离出来,提高代码的复用性 AOP术语 advice-通知:要执行的任务 Spring切面有5 ...

  10. getline读取整行文本// isprint

    getline——读取整行文本 这个函数接受两个参数:一个输入流对象和一个string对象.getline函数从输入流的下一行读取,并保存读取的内容到string中,但不包括换行符.和输入操作符不一样 ...