将存储为YYYYMMDD格式的INT类型日期列转换为DD/MM/YYYY格式
解决INT类型YYYYMMDD日期转DD/MM/YYYY格式的问题
直接用FORMAT函数处理INT类型的日期值行不通,因为FORMAT不会把纯数字自动识别为日期格式,得先把INT转成DATE类型再做格式化。给你几个可行的SQL写法:
- 方法一:先转字符串再转DATE,最后用FORMAT格式化
SELECT FORMAT(CAST(CAST(date_int AS VARCHAR(8)) AS DATE), 'dd/MM/yyyy') AS formatted_date FROM your_table
- 方法二:用CONVERT指定风格码转DATE,再FORMAT
SELECT FORMAT(CONVERT(DATE, CAST(date_int AS VARCHAR(8)), 112), 'dd/MM/yyyy') AS formatted_date FROM your_table
- 方法三:不用FORMAT,直接用CONVERT两次转成目标格式
SELECT CONVERT(VARCHAR(10), CONVERT(DATE, CAST(date_int AS VARCHAR(8)), 112), 103) AS formatted_date FROM your_table
原理很直白:INT类型的20501231只是个普通数字,必须先转成字符串'20501231',再转成DATE类型,这样FORMAT或者CONVERT才能识别它是日期,进而转成你要的31/12/2050格式。
内容的提问来源于stack exchange,提问作者user2286075
相关产品推荐
相关产品推荐

