qq_39372401 2018-01-19 06:43 采纳率: 75%
浏览 1123
已采纳

这样的存储过程如何写啊?(SQL SERVER数据库)

首先:输入2个时间参数 开始时间 结束时间(ps:只能选择年月)
其次:查询9月到十月的数据,不是9月1日到10月31日的
给大家解释下:这里我要查9月的数据,其实是8月15到9月14的数据
就是不按照正常的自然月来走,我们这边统计都是按照上个月15到这个月14来算一个月的。然后要在查询的基础上-1,因为每个月都有自然增长的一人(这里的每月是指上个月15到这个月14)

这边贴一个表的语句,就按照输入的月份来查询相应的数据

CREATE TABLE [dbo].t_date NOT NULL,
[name] nvarchar NOT NULL,
[入职时间] nvarchar NOT NULL,
) ON [PRIMARY]

不清楚的可私聊

  • 写回答

3条回答 默认 最新

  • bbwolf 2018-01-21 08:33
    关注

    CREATE TABLE [dbo].t_date (
    [name] nvarchar(10) NOT NULL,
    [入职时间] Datetime NOT NULL,
    ) ON [PRIMARY]
    GO

    insert into t_date ( name , 入职时间 ) values ('a1','2016-4-10')
    insert into t_date ( name , 入职时间 ) values ('a2','2016-4-11')
    insert into t_date ( name , 入职时间 ) values ('a3','2016-4-12')
    insert into t_date ( name , 入职时间 ) values ('a4','2016-4-13')
    insert into t_date ( name , 入职时间 ) values ('a5','2016-4-14')
    insert into t_date ( name , 入职时间 ) values ('a6','2016-4-15')
    insert into t_date ( name , 入职时间 ) values ('a7','2016-4-16')
    insert into t_date ( name , 入职时间 ) values ('a8','2016-4-17')
    insert into t_date ( name , 入职时间 ) values ('a9','2016-4-18')
    insert into t_date ( name , 入职时间 ) values ('a10','2016-4-19')
    insert into t_date ( name , 入职时间 ) values ('a11','2016-4-20')
    insert into t_date ( name , 入职时间 ) values ('a12','2016-4-21')
    insert into t_date ( name , 入职时间 ) values ('a13','2016-4-22')
    insert into t_date ( name , 入职时间 ) values ('a14','2016-4-23')
    insert into t_date ( name , 入职时间 ) values ('a15','2016-4-24')
    insert into t_date ( name , 入职时间 ) values ('a16','2016-5-10')
    insert into t_date ( name , 入职时间 ) values ('a17','2016-5-11')
    insert into t_date ( name , 入职时间 ) values ('a18','2016-5-12')
    insert into t_date ( name , 入职时间 ) values ('a19','2016-5-13')
    insert into t_date ( name , 入职时间 ) values ('a20','2016-5-14')
    insert into t_date ( name , 入职时间 ) values ('a21','2016-5-15')
    insert into t_date ( name , 入职时间 ) values ('a22','2016-5-16')
    insert into t_date ( name , 入职时间 ) values ('a23','2016-5-17')
    insert into t_date ( name , 入职时间 ) values ('a24','2016-5-18')
    insert into t_date ( name , 入职时间 ) values ('a25','2016-5-19')
    insert into t_date ( name , 入职时间 ) values ('a26','2016-5-20')
    insert into t_date ( name , 入职时间 ) values ('a27','2016-5-21')
    insert into t_date ( name , 入职时间 ) values ('a28','2016-5-22')
    insert into t_date ( name , 入职时间 ) values ('a29','2016-5-23')
    insert into t_date ( name , 入职时间 ) values ('a30','2016-5-24')
    insert into t_date ( name , 入职时间 ) values ('a31','2016-6-10')
    insert into t_date ( name , 入职时间 ) values ('a32','2016-6-11')
    insert into t_date ( name , 入职时间 ) values ('a33','2016-6-12')
    insert into t_date ( name , 入职时间 ) values ('a34','2016-6-13')
    insert into t_date ( name , 入职时间 ) values ('a35','2016-6-14')
    insert into t_date ( name , 入职时间 ) values ('a36','2016-6-15')
    insert into t_date ( name , 入职时间 ) values ('a37','2016-6-16')
    insert into t_date ( name , 入职时间 ) values ('a38','2016-6-17')
    insert into t_date ( name , 入职时间 ) values ('a39','2016-6-18')
    insert into t_date ( name , 入职时间 ) values ('a40','2016-6-19')
    insert into t_date ( name , 入职时间 ) values ('a41','2016-6-20')
    insert into t_date ( name , 入职时间 ) values ('a42','2016-6-21')
    insert into t_date ( name , 入职时间 ) values ('a43','2016-6-22')
    insert into t_date ( name , 入职时间 ) values ('a44','2016-6-23')
    insert into t_date ( name , 入职时间 ) values ('a45','2016-6-24')

    GO

    Create Proc DateBetweens @s nvarchar(7),@e nvarchar(7)
    AS
    BEGIN

    Select 入职时间 ,
    YEAR( case when DAY(入职时间)<15 THEN DateAdd(M,-1,入职时间) else 入职时间 end ) * 100 + MONTH ( case when DAY(入职时间)<15 THEN DateAdd(M,-1,入职时间) else 入职时间 end ) as 月份,
    name from T_Date
    Where 入职时间 >= DATEADD(M,-1,@s + '-15') AND 入职时间 < @e + '-14'
    

    END
    GO
    DateBetweens '2016-05','2016-10'

    结果

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(2条)

报告相同问题?

悬赏问题

  • ¥15 (关键词-电路设计)
  • ¥15 如何解决MIPS计算是否溢出
  • ¥15 vue中我代理了iframe,iframe却走的是路由,没有显示该显示的网站,这个该如何处理
  • ¥15 操作系统相关算法中while();的含义
  • ¥15 CNVcaller安装后无法找到文件
  • ¥15 visual studio2022中文乱码无法解决
  • ¥15 关于华为5g模块mh5000-31接线问题
  • ¥15 keil L6007U报错
  • ¥15 webapi 发布到iis后无法访问
  • ¥15 初学者如何快速上手学习stm32?