如何将分离的会计期间与年度拼接转换为date类型?
解决会计期间与年度拼接转Date类型的报错问题
你的代码报错,是因为直接把会计期间和年度拼接后得到的字符串(比如12023、102024)根本不是合法的日期格式,SQL没法识别转换。
两种可行解决方案
方案1:构造标准日期字符串再转换
先把会计期间补成两位数字(比如把1变成01),再拼接成年-月-日的标准格式,最后转成Date类型。
SQL Server 示例:
SELECT CAST(CONCAT(tb.AccountingYear, '-', RIGHT('0' + CAST(tb.AccountingPeriod AS VARCHAR), 2), '-01') AS DATE) AS month_year_date FROM ttbl_a tb
MySQL 示例:
SELECT STR_TO_DATE(CONCAT(tb.AccountingYear, '-', LPAD(tb.AccountingPeriod, 2, '0'), '-01'), '%Y-%m-%d') AS month_year_date FROM ttbl_a tb
方案2:用日期构造函数(更高效)
部分数据库支持直接传入年、月、日生成日期的函数,比如SQL Server的DATEFROMPARTS,完全不用字符串拼接,更靠谱:
SELECT DATEFROMPARTS(tb.AccountingYear, tb.AccountingPeriod, 1) AS month_year_date FROM ttbl_a tb
如果需要指定输出的日期显示格式(比如你要的01/01/2023),可以再套一层格式转换函数:
SQL Server 指定格式示例:
SELECT CONVERT(VARCHAR, DATEFROMPARTS(tb.AccountingYear, tb.AccountingPeriod, 1), 101) AS month_year_date FROM ttbl_a tb
内容的提问来源于stack exchange,提问作者cardonas
相关产品推荐
相关产品推荐

