Azure Synapse视图日期查询报错求助(表查询正常)
Azure Synapse视图日期查询报错问题
我有一个Azure Synapse数据库,其中包含视图VW_REF_DATES,该视图有一个类型为datetime2(0)的列c_date。当在WHERE子句中使用c_date列添加日期条件查询该视图时,持续出现数据类型相关错误:"Conversion failed when converting date and/or time from character string.",但使用varchar(500)类型的其他列进行WHERE条件查询时正常。
将该视图转换为表后,使用同样的查询语句则可正常执行。想确认这是Azure Synapse DB独有的限制,而非MS SQL Server DB的问题吗?
示例查询语句
SELECT * FROM [dbo].[VW_REF_Dates] DATES WHERE FORMAT(DATES.[c_date], 'yyyy-MM-dd') <= '2022-03-20'
或
SELECT * FROM [dbo].[VW_REF_Dates] DATES WHERE FORMAT(DATES.[c_date], 'yyyy-MM-dd') <= '2022-03-20' AND FORMAT(DATES.[c_date], 'yyyy-MM-dd') > '2021-03-19'
已尝试的查询方式(视图查询均失败,表查询正常)
SELECT * FROM [dbo].[VW_REF_Dates] DATES WHERE YEAR(DATES.[c_date]) <= '2022'
或以下任意一种:
WHERE DATES.[c_date] <= '2022-03-20 00:00:00.000'
WHERE FORMAT(DATES.[c_date], 'yyyy-MM-dd') <= '2022-03-20'
WHERE CONVERT(date, DATES.[c_date]) <= '2022-03-20 00:00:00.000'
报错信息
Msg 241, Level 16, State 1, Line 14
Conversion failed when converting date and/or time from character string.
视图创建语句
CREATE VIEW [dbo].[VW_REF_Dates] AS SELECT CASE WHEN CONVERT(DATETIME2(0), Att_5, 103) IS NOT NULL THEN CONVERT(DATETIME2(0), Att_5, 103) WHEN CONVERT(DATETIME2(0), Att_5, 101) IS NOT NULL THEN CONVERT(DATETIME2(0), Att_5, 101) END AS [c_date] , Att_6 AS [num_days] FROM [dbo].[tbl_Ref]
样本数据
| Att_5 | Att_6 |
|---|---|
| 22/06/2006 | NULL |
| 21/06/2009 | 364 |
| 28/06/2012 | 338 |
| 24/06/2013 | 316 |
内容的提问来源于stack exchange,提问作者van_nash24
相关产品推荐
相关产品推荐

