美文网首页
mysql 日期处理成财年财季财月财周

mysql 日期处理成财年财季财月财周

作者: 灰纸黑字 | 来源:发表于2020-07-16 21:16 被阅读0次

    财年是一个公司的上市时间决定的,所以不同的公司财年码表不同,因为我目前用的财年是从4月1号开始算的,自己就写了个mysql 的工具函数:

    SELECT

    -- 自然日

    naturalday,

    -- 财年

    concat('FY', DATE_FORMAT(naturalday,'%y'),  DATE_FORMAT(naturalday,'%y')+1) as fiscalyear,

    -- 财季

    concat('Q', case when QUARTER(naturalday)=4 then 1 ELSE QUARTER(naturalday)-1 END

    ) as fiscalquarter,

    -- 财月

    DATE_FORMAT(naturalday,'%m') as fiscalmonth,

    -- 财周

    timestampdiff(WEEK,date(concat(year(naturalday),'-',elt(quarter(naturalday),1,4,7,10),'-',1)),naturalday) as fiscalweek

    from tool_lenovo_day;

    一下是我写的一个存储过程:

    CREATE DEFINER=`root`@`%` PROCEDURE `sp_InitialFiscalYear_data`(`sDate` varchar(20),`eDate` varchar(20))

    BEGIN

    /*

    工具函数:生成时间段内的lenovo的财年、财季、财月、财周数据

    做成:白纸黑字

    做成日:2020-07-16

    入参:

    sDate 开始自然日

    eDate 结束自然日

    业务逻辑:

    tool_lenovo_day 财年表

    有更新、没有新增财年数据

    */

    INSERT INTO tool_lenovo_day SELECT

    *

    FROM

    (

    SELECT

    naturalday,

    concat( 'FY', DATE_FORMAT( naturalday, '%y' ), DATE_FORMAT( naturalday, '%y' )+ 1 ) AS fiscalyear,

    concat( 'Q', CASE WHEN QUARTER ( naturalday )= 4 THEN 1 ELSE QUARTER ( naturalday )- 1 END ) AS fiscalquarter,

    DATE_FORMAT( naturalday, '%m' ) AS fiscalmonth,

    timestampdiff(

    WEEK,

    date(

    concat( YEAR ( naturalday ), '-', elt( QUARTER ( naturalday ), 1, 4, 7, 10 ), '-', 1 )),

    naturalday

    )+1 AS fiscalweek

    FROM

    (

    SELECT

    date_add( date_sub(sDate,interval 1 day), INTERVAL ( cast( help_topic_id AS signed INTEGER ) + 1 ) day ) naturalday

    FROM

    mysql.help_topic

    WHERE

    help_topic_id < DATEDIFF(eDate,date_sub(sDate,interval 1 day))

    ORDER BY

    help_topic_id

    ) as s_e_day

    ) AS a

    ON DUPLICATE KEY UPDATE fiscalyear = a.fiscalyear,

    fiscalquarter = a.fiscalquarter,

    fiscalmonth = a.fiscalmonth,

    fiscalweek = a.fiscalweek;

    END

    相关文章

      网友评论

          本文标题:mysql 日期处理成财年财季财月财周

          本文链接:https://www.haomeiwen.com/subject/ylnmhktx.html