create or replace procedure sjh.five_category_loan_quality(in input_date date) Language sql specific five_category_loan_quality --------存储过程body begin declare variable_name type; set variable = value ; ------存储过程的参数时直接可以用的 input_date if condition then statement1; statement2; elseif condition then statement1; statemnet2; statement1; statement2; end if ; 注:存储过程中一般不用for循环,避免SQL无限循环影响数据库。解决方案可在procedure外面包一层shell脚本进行循环调用。 procedure的调用 call sjh.five_category_loan_quality(参数) 以下结果在’2023-04-04‘下测试。 length(string) :例 length(cast(column value as varchar)) left(string,count) :返回从左往右的count数量的字符串 right(string,count):返回从右往左的count数量的字符串 substr(string,a1,a2):返回string中 从a1个开始,取a2长度的字符串 日期可以直接减 数量 + 单位:例 cast('2023-04-05' as date) - 5 day or cast('2023-04-05' as date) - 5 month 两个日期相差的天数 days('2023-04-05') - days('2023-01-06') date(日期):即年月日,2023-04-04 year(日期):年份,2023 month(日期):月份 4 quarter(日期):季度 2 week(日期) :第几周 14 day(日期):返回日期部分 4 hour(日期): minute(日期) second(日期) dayofyear(日期):返回一年内的第几天 94 dayofweek(日期):返回星期几:用数字表示的 3 dayname(日期):返回星期几:用英文表示的 Tuesday monthname(日期):返回星期几:用英文表示的 April 测试values date(now()) 日期变化 还可以通过 values (’2023-02-01‘::date - 1 year +1 day +6 month) 两个日期间隔的天数 values days('2023-02-01'::date)-days('2023-02-01'::date) 将日期转换为字符串格式 char('2023-02-01'::date) 将字符串转换为日期格式 date('2023-02-01') ::后面加要转换的类型更方便一些 TO_CHAR 将时间戳数据转变成字符串类型 将时间类型的变量,转换为字符串类型,to_char('2023-04-05','yyyymmdd') 返回已用字符模板进行格式化的时间戳记的字符表示。TO_CHAR 是 VARCHAR_FORMAT 的同义词。 TO_DATE ::用来转化其他数据类型变成时间戳必定是带时分秒的 从已使用字符模板解释过的字符串返回时间戳记。TO_DATE 是 TIMESTAMP_FORMAT 的同义词。 例:to_date('20230405','yyyy-mm-dd') 接下去总结各种月初月末,季初季末的日期。 月末的判断: