mysql 计算两个日期之间的工作日天数

  创建透视表t500
  
  建表
  
  CREATE TABLE `t500` (
  
  `id` int(11) NOT NULL AUTO_INCREMENT,
  
  PRIMARY KEY (`id`)
  
  ) ENGINE=InnoDB AUTO_INCREMENT=501 DEFAULT CHARSET=latin1;
  
  插入500条数据
  
  CREATE DEFINER=`json`@`%` PROCEDURE `i500`()
  
  BEGIN
  
  DECLARE a INT default 1;
  
  while a<=500 do
  
  insert into t500 (id) value(a);
  
  set a=a+1;
  
  end while;
  
  end
  
  2.1
  
  select t500.id from t500 where t500.id <=DATEDIFF("2019-02-01","2019-01-01")+1
  
  2.2
  
  SELECT
  
  DATE_ADD(
  
  STR_TO_DATE( "2019-01-01", '%Y-%m-%d' ),
  
  INTERVAL t500.id - 1 DAY
  
  )
  
  FROM
  
  t500
  
  WHERE
  
  t500.id <= DATEDIFF( "2019-02-01", "2019-01-01" ) +1
  
  2.3
  
  SELECT
  
  DATE_FORMAT(
  
  DATE_ADD(
  
  STR_TO_DATE( "2019-01-01", '%Y-%m-%d' ),
  
  INTERVAL t500.id - 1 DAY
  
  ),
  
  '%a'
  
  )
  
  FROM
  
  t500
  
  WHERE
  
  t500.id <= DATEDIFF( "2019-02-01", "2019-01-01" ) +1
  
  2.4
  
  SELECT
  
  CASE
  
  WHEN
  
  DATE_FORMAT(
  
  DATE_ADD(
  
  STR_TO_DATE( "2019-01-01", '%Y-%m-%d' ),
  
  INTERVAL t500.id - 1 DAY
  
  ),
  
  '%a'
  
  ) IN ( 'Sat', 'Sun' ) THEN
  
  0 ELSE 1 end
  
  FROM
  
  t500
  
  WHERE
  
  t500.id <= DATEDIFF( "2019-02-01", "2019-01-01" ) +1
  
  2.5 最终SQL
  
  select sum(CASE
  
  WHEN
  
  DATE_FORMAT(
  
  DATE_ADD(
  
  STR_TO_DATE( "2019-01-01", '%Y-%m-%d' ),
  
  INTERVAL t500.id - 1 DAY
  
  ),
  
  '%a'
  
  ) IN ( 'Sat', 'Sun' ) THEN
  
  0 ELSE 1 end ) as days from
  
  t500
  
  WHERE
  
  t500.id <= DATEDIFF( "2019-02-01", "2019-01-01" ) +1
  
  @SpringBootApplication
  
  @ComponentScan(value =www.dfgjpt.com "indi.viyoung.viboot.*")
  
  @MapperScan(value = "indi.viyoung.viboot.swagger2.mapper")
  
  @EnableSwagger2
  
  @EnableSwaggerBootstrapUI
  
  public class ViBootSwaggerApplication {
  
  public static void main(www.fengshen157.com String[www.mhylpt.com] args) {
  
  SpringApplication.run(ViBootSwaggerApplication.class, args);
  
  }
  
  }
  
  第四步:通过注解来完成API文档
  
  1. @Api
  
  注解名称    注解属性    作用域    属性作用
  
  @Api    tags    类    说明该类的作用
  
  value    类    说明该类的作用
  
  举个?:
  
  @Api(value = "用户类控制器",tags="用户类控制器")
  
  public class UserController {
  
  ...
  
  }
  
  在这里插入图片描述
  
  2 . @ApiOperation
  
  注解名称    注解属性    作用域    属性作用
  
  @ApiOperation()    value    方法    描述方法作用
  
  notes    方法    提示内容
  
  tags    方法    分组
  
  举个?:
  
  @ApiOperation(value = "获取用户列表",notes = "获取用户列表")
  
  public List get() {
  
  ...
  
  }
  
  3. @ApiParam
  
  注解名称    注解属性    作用域    属性作用
  
  @ApiParam()    name    方法参数    参数名
  
  value    方法参数    参数说明
  
  required    方法参数    是否必填
  
  举个?:
  
  @ApiOperation(value="获取用户详细信息", notes="根据url的id来获取用户详细信息")
  
  public User get(@ApiParam(name="id",value=www.mhylpt.com"用户id",required=true) Long id) {
  
  log.info("GET..{}...方法执行。。。",id);
  
  return userService.getById(id);
  
  }
  
  4. @ApiModel && @ApiModelProperty
  
  注解名称    注解属性    作用域    属性作用
  
  @ApiModel()    value    类    对象名
  
  description    类    描述
  
  @ApiModelProperty()    value    方法    字段说明
  
  name    方法    属性名
  
  dataType    方法    属性类型
  
  required    方法    是否必填
  
  example    方法    举例
  
  hidden    方法    隐藏
  
  举个?:
  
  @ApiModel(value="user对象",description="用户对象user")
  
  public class User implements Serializable {
  
  private static final long serialVersionUID = 1L;
  
  @TableId(value = "id", type =www.yongshi123.cn IdType.AUTO)
  
  @ApiModelProperty(value = www.ycjszpgs.com"用户ID",example = "1000001",hidden=true)
  
  private Long id;
  
  @ApiModelProperty(www.michenggw.com value="用户名",required = true,dataType = "String")
  
  private String userName;
  
  @ApiModelProperty(value = "密码")
  
  private String password;
  
  }
  
  5. @ApiImplicitParam && @ApiImplicitParams
  
  `@ApiImplicitParam`可以单个用于方法至上,多个参数的话可以把`@ApiImplicitParam`放到`@ApiImplicitParams`中,这里只罗列`@ApiImplicitParam`的属性:
  
  注解名称    注解属性    作用域    属性作用
  
  @ApiImplicitParam()    value    方法    参数说明
  
  name    方法    参数名
  
  dataType    方法    数据类型
  
  paramType    方法    参数类型
  
  example    方法    举例
  
  举个?:
  
  @ApiImplicitParams({
  
  @ApiImplicitParam(name = "user",www.yongshiyule178.com value = "用户实体user", required = true, dataType = "User")
  
  })
  
  public void put(User user) {
  
  userService.updateById(user);
  
  log.info("PUT方法执行。。。");
  
  }
  
  这里需要注意一点,我们并没有在注解中写图中圈中的两个参数,这个是去读取了我们刚刚为User类的注解,并将用户名设置为必填!
  
  6.@ApiResposne && @ApiResponses
  
  @ApiResponses与@ApiResponse的关系和@ApiImplicitParam && @ApiImplicitParams 的关系和用法都是类似的
  
  注解名称    注解属性    作用域    属性作用
  
  @ApiResponse()    response    方法    返回类
  
  code    方法    返回码
  
  message    方法    返回信息
  
  examples    方法    例子
  
  最后再聊聊这个UI
  
  先贴几张spring-fox的ui(正是我们所熟知的那一套)
  
  相信看到这里,大家心里对于这两套UI的选择应该都有个答案了,当然bootstrap风格的ui不仅好看,而且有各种强大的功能~
  
  导出md文档
  
  参数缓存
  
  在这里插入图片描述
  
  原创文章,文笔有限,才疏学浅,文中若有不正之处,万望告知。

你可能感兴趣的:(mysql 计算两个日期之间的工作日天数)