mysql 中取某时间段内的月份及周数

--  获取年月的存储过程
DELIMITER $$

DROP   PROCEDURE   IF   EXISTS  `radius`.`mygetyearmonth`$$

CREATE  DEFINER = `radius`@` % PROCEDURE  `mygetyearmonth`( IN  datebegin  int , IN  dateend  int )
BEGIN
   
DECLARE  MidDate  datetime ;
       
Set  MidDate  =  DATE_FORMAT(concat( left (datebegin, 4 ), ' - ' , right (datebegin, 2 ), ' -01 ' ), ' %Y-%m-01 00:00:00 ' );
       
CREATE   TEMPORARY   TABLE  MyYearMonth(
        yearmonth 
int
        );
       
WHILE  EXTRACT(YEAR_MONTH  FROM  MidDate) <= dateend DO
            
insert   into  MyYearMonth(yearmonth)  values  (EXTRACT(YEAR_MONTH  FROM  MidDate));
    
Set  MidDate = DATE_ADD(MidDate, INTERVAL  1   month );
        
END   WHILE  ;
        
select   *   from  MyYearMonth;
       
DROP   TEMPORARY   TABLE  MyYearMonth;
END $$

DELIMITER ;
-- 过程结束

调用执行存储过程
call mygetyearmonth(
' 200601 ' , ' 200702 ' )
返回结果集
"
200601 "
"
200602 "
"
200603 "
"
200604 "
"
200605 "
"
200606 "
"
200607 "
"
200608 "
"
200609 "
"
200610 "
"
200611 "
"
200612 "
"
200701 "
"
200702 "

--  获取某段时间包含多少周的存储过程
DELIMITER $$

DROP   PROCEDURE   IF   EXISTS  `radius`.`mygetyearweeks`$$

CREATE  DEFINER = `radius`@` % PROCEDURE  `mygetyearweeks`( IN  datebegin  datetime , IN  dateend  datetime )
BEGIN
        
DECLARE  MidDate  datetime ;
        
DECLARE  num  int ;
        
Set  MidDate = DATE_FORMAT(date_add(datebegin,INTERVAL  - (DAYOFWEEK(datebegin) - 1 ) + 1   DAY ), ' %Y-%m-%d 00:00:00 ' );
        
SET  num = 1 ;
        
CREATE   TEMPORARY   TABLE  MyYearWeek(
        num 
int ,
        begintime 
datetime ,
        endtime 
datetime
        );

    
WHILE  MidDate < dateend DO
    
insert   into  MyYearWeek(num,begintime,endtime)  values  
    (num,
    DATE_FORMAT(MidDate,
' %Y-%m-%d 00:00:00 ' ),
    DATE_FORMAT(DATE_ADD(MidDate, INTERVAL 
6   DAY ), ' %Y-%m-%d 23:59:59 ' )
    );
        
Set  MidDate = DATE_ADD(MidDate, INTERVAL  7   DAY );
        
Set  num = num + 1 ;
    
END   WHILE  ;

       
select   *   from  MyYearWeek;
        
DROP   TEMPORARY   table  MyYearWeek ;
        
END $$

DELIMITER ;
-- 过程结束
调用执行存储过程
call mygetyearweeks(
' 2008-01-03 ' , ' 2008-04-09 ' )
返回结果集
num,begintime,endtime
"
1 "," 2007 - 12 - 31   00 : 00 : 00 "," 2008 - 01 - 06   23 : 59 : 59 "
"
2 "," 2008 - 01 - 07   00 : 00 : 00 "," 2008 - 01 - 13   23 : 59 : 59 "
"
3 "," 2008 - 01 - 14   00 : 00 : 00 "," 2008 - 01 - 20   23 : 59 : 59 "
"
4 "," 2008 - 01 - 21   00 : 00 : 00 "," 2008 - 01 - 27   23 : 59 : 59 "
"
5 "," 2008 - 01 - 28   00 : 00 : 00 "," 2008 - 02 - 03   23 : 59 : 59 "
"
6 "," 2008 - 02 - 04   00 : 00 : 00 "," 2008 - 02 - 10   23 : 59 : 59 "
"
7 "," 2008 - 02 - 11   00 : 00 : 00 "," 2008 - 02 - 17   23 : 59 : 59 "
"
8 "," 2008 - 02 - 18   00 : 00 : 00 "," 2008 - 02 - 24   23 : 59 : 59 "
"
9 "," 2008 - 02 - 25   00 : 00 : 00 "," 2008 - 03 - 02   23 : 59 : 59 "
"
10 "," 2008 - 03 - 03   00 : 00 : 00 "," 2008 - 03 - 09   23 : 59 : 59 "
"
11 "," 2008 - 03 - 10   00 : 00 : 00 "," 2008 - 03 - 16   23 : 59 : 59 "
"
12 "," 2008 - 03 - 17   00 : 00 : 00 "," 2008 - 03 - 23   23 : 59 : 59 "
"
13 "," 2008 - 03 - 24   00 : 00 : 00 "," 2008 - 03 - 30   23 : 59 : 59 "
"
14 "," 2008 - 03 - 31   00 : 00 : 00 "," 2008 - 04 - 06   23 : 59 : 59 "
"
15 "," 2008 - 04 - 07   00 : 00 : 00 "," 2008 - 04 - 13   23 : 59 : 59 "
 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要获取一段时间内的周数每周的具体时间据,可以使用JavaScript编程语言的Date对象和相应的方法来实现。 首先,我们需要定义两个日期变量,即开始日期和结束日期,可以使用日期字符串或者Date对象进行定义。然后,通过Date对象的getTime()方法,将日期转换为时间戳,方便计算。 接下来,我们使用getTime()方法得到的时间戳来计算开始日期和结束日期之间的时间差,然后将该时间差转换为周数,使用Math.floor()函对结果进行向下取整,并加1,即为周数的总。 在循环中,我们从开始日期开始,每次累加一周的时间戳,然后使用Date对象的getDay()方法获取每周的具体时间据。getDay()返回的是一个表示星期几的字,0表示星期日,1表示星期一,依此类推。 最后,我们可以将周数每周的具体时间据输出到控制台或者其他位置,以满足具体需求。 以下是一个简单的示例代码: ```javascript var startDate = new Date("2021-01-01"); var endDate = new Date("2021-12-31"); var startTime = startDate.getTime(); var endTime = endDate.getTime(); var timeDiff = endTime - startTime; var totalWeeks = Math.floor(timeDiff / (7 * 24 * 60 * 60 * 1000)) + 1; for (var i = 0; i < totalWeeks; i++) { var weekStartTime = startTime + (i * 7 * 24 * 60 * 60 * 1000); var weekEndTime = weekStartTime + (6 * 24 * 60 * 60 * 1000); var startDateTime = new Date(weekStartTime); var endDateTime = new Date(weekEndTime); console.log("第" + (i + 1) + "周:"); console.log("开始时间:" + startDateTime.toLocaleString()); console.log("结束时间:" + endDateTime.toLocaleString()); } ``` 该代码可以输出从2021年1月1日至2021年12月31日之间的周数每周的具体时间据。注意,具体时间据使用toLocaleString()方法来格式化输出,可以根据需要进行调整。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值