日度归档:2019年7月19日

mssql sqlserver 返回两个日期之间所有年份的方法分享


摘要:
下文讲述返回两个日期之间所有年份的方法分享,如下所示:
实验环境:sql server 2008 R2



实现思路:
第一种方法,使用while循环生成年份列表
第二种方法,借助外界一张拥有”连续编号的基础表”生成年份列表,如下所示:


    ---例:计算2009-1-1 至 2013-10-1之间的所有年份
    ---方法1:使用while遍历两个日期之间的年份记录
    create table [maomao365.com](yearInfo int)
     go
      declare @t datetime
      set @t ='2009-1-1'
       insert into  [maomao365.com](yearInfo) value(year(@t))
        
      while @t<'2013-10-1'
       begin 
          set @t = dated(year,1,@t)
          insert into  [maomao365.com](yearInfo) value(year(@t))
       end
   
      go
      select yearInfo from [maomao365.com]
     go
     truncate table [maomao365.com]
     drop      table [maomao365.com]
     go
    
     
   ---方法2:借助系统表 master..spt_values中的连续记录,生成连续年份的方法
      select 
         year(dateadd(year,number,'2009-01-01')) as [年份]
     from master..spt_values 
     where   
     dateadd(year,number,'2009-01-01') < '2013-10-1'
     and type='p'

mssql sqlserver使用sql脚本计算两个日期相差的年份和月份的方法分享


摘要:
下文分享在sqlserver中如何计算两个日期之间的年份或月份差,如下所示:
实验环境:sqlserver 2008 R2



实现思路:
通过在datediff系统函数中输入不同的参数及可实现sqlserver中计算年份和月份差的方法,如下所示:

 ---例:
    declare @maomaoDate1 datetime
    declare @maomaoDate2 datetime
   
    set @maomaoDate1 ='2019-10-12'
    set @maomaoDate2 ='2019-12-28'
 
    ---计算两个日期之间年份差
     select datediff(year,@maomaoDate1,@maomaoDate2) as [日期之间年份差]     
    
    ---计算两个日期之间月份差
    select datediff(month,@maomaoDate1,@maomaoDate2) as [日期之间月份差]    
    
    go 
 

mssql sqlserver 根据”出生年月日”获取年龄的方法分享


摘要:
下文通过举例的方式讲述根据”出生年月日”计算年龄的方法分享,如下所示:
实验环境:sql server 2008 R2



实现思路:
使用日期差函数datediff计算出”出生日期和当前日期”的月份差,然后和12整除,得到的数为年数,
然后再将”出生日期和当前日期”的月份差,然后和12求余数,得出当前的月份数,返回出当前年龄的 年份和月份数

例:

    ---例1:根据指定出生日期计算年龄
     declare @maomao    datetime
     set       @maomao ='2001-8-8'
    
      ---计算年岁的方法
     select datediff(month,@maomao,getdate())/12 as [岁],
             , datediff(month,@maomao,getdate())%12 as [个月], 
    go

    ---例2:计算整张表的年龄
        select datediff(month,[出生日期列],getdate())/12 as [岁],
             , datediff(month,[出生日期列],getdate())%12 as [个月] 
          from [数据表]
    go