项目场景:
我们在使用BI软件制作电子报表的时候,经常会使用到控件传递参数的情况。那么,假如当控件参数传递的值为字符串 ‘2024-05-28’ 格式,我们数据表中的日期栏位是字符串 ‘2024/05/28’ 格式,就会造成查询条件比对失败。此时,我们需要在SQL语句中对参数的格式进行转换。
问题描述:
遇到格式转换的问题,我们最先想到的就是CONVERT()函数。其中:
Select CONVERT(varchar(100), GETDATE(), 111)
就能够把当前时间转换成 yy/mm/dd 的格式呈现出来。
但是我们实际运用时发现,如果直接使用上述函数进行格式转换,会出现如下转换失败的情况:
原因分析:
其实,SELECT CONVERT(varchar(100), GETDATE(), 111),这条语句是将GETDATE() 通过 “111” 的格式,转换成对应的字符串类型,此时的GETDATE() 属于Date 数据类型。而我们参数传递过来的 ‘2024-05-28’ 是String 数据类型中的一个字符串。
解决方案:
因此,先把 ‘2024-05-28’ 转换成 Date 数据类型,再通过CONVERT(数据类型[(长度)],表达式[,样式]) 将其转换成’2024/05/28’ 即可:
SELECT CONVERT(VARCHAR(10),CAST('2024-05-28' AS DATE),111)
结果如下图: