SQR日期格式转换问题:MM-DD-YYYY转YYMMDD
解决SQR中MM-DD-YYYY转YYMMDD日期格式的问题
你完全说对了!你遇到的错误根源就是对STRTODATE函数的用法理解偏差——这个函数的第二个参数是输入字符串的格式掩码,而不是你期望的输出格式。你传入YYMMDD作为掩码,但实际输入是MM-DD-YYYY格式,SQR自然无法解析,所以抛出了无效数据的错误。
要完成这个转换,你需要两步走:先把原始字符串转成SQR的日期数值类型,再把日期数值转成目标格式的字符串。具体用到两个函数:STRTODATE和DATETOSTR。
具体实现示例
-- 假设原始日期字符串是MM-DD-YYYY格式 let $original_date = '03-09-2018' -- 第一步:用STRTODATE将字符串转为日期数值,指定正确的输入格式 let #date_num = strtodate($original_date, 'MM-DD-YYYY') -- 第二步:用DATETOSTR将日期数值转为目标格式的字符串 let $target_date = datetostr(#date_num, 'YYMMDD') -- 验证输出(会打印180309) show $target_date
简化写法(无需中间变量)
如果不想用中间变量存储日期数值,可以直接嵌套调用两个函数:
let $target_date = datetostr(strtodate('03-09-2018', 'MM-DD-YYYY'), 'YYMMDD')
关键说明
STRTODATE(input_str, input_mask):负责将符合input_mask格式的字符串,转换成SQR内部使用的日期数值(这个数值是从某个基准日期开始的天数,对用户透明)。DATETOSTR(date_num, output_mask):负责将日期数值,按照output_mask的格式转换成字符串,这里YYMMDD就是你需要的输出格式(两位年份+两位月份+两位日期)。
这样处理后,就能顺利完成MM-DD-YYYY到YYMMDD的格式转换了。
内容的提问来源于stack exchange,提问作者Jimenemex
相关产品推荐
相关产品推荐

