日期“”无法识别 - 雪花

问题描述 投票:0回答:1

我正在尝试在 Snowflake 中重构 SQL Server 视图,但收到错误消息“无法识别日期”。

我的代码的整体结构如下:

SELECT  
       g.UserID
      ,g.AccountId
      ,g.AccountNumber
      ,g.AccountDate
      ,g.column4
      ,g.column5
      ,g.column6
      ,g.AccountType
      ,g.GameType
      ,g.column7
      ,g.column8
      ,g.column9
      ,g.column10
      ,g.ExitDate
      ,g.ReturnDate
      ,g.GameLength
      ,g.Case1
      ,g.Case2
      ,g.Case3
FROM DEV_DB.REPORTS.HISTORICAL_GAMES_VW g
LEFT JOIN DEV_DB.GAMES.GAMES_REVENUE_VW r
ON r.GameType = 
      (CASE
          WHEN g.GameType = '2' AND g.ExitDate < '2000-01-01' THEN 'B'
          WHEN g.GameType = '2' AND g.ExitDate >= '1990-12-31' THEN '2'
          WHEN g.GameType = '3' THEN 'M'
          WHEN g.GameType = '4' THEN 'N'
          ELSE g.GameType
       END)
LEFT JOIN DEV_DB.GAMES.GAME_TYPES_VW t
ON t.GameCode = g.AccountType
WHERE g.ExitDate > '1995-12-31' AND g.AccountDate <= CURRENT_DATE

UNION

SELECT  
       g.UserID
      ,g.AccountId
      ,g.AccountNumber
      ,g.AccountDate
      ,g.column4
      ,g.column5
      ,g.column6
      ,g.AccountType
      ,g.GameType
      ,g.column7
      ,g.column8
      ,g.column9
      ,g.column10
      ,g.ExitDate
      ,g.ReturnDate
      ,g.GameLength
      ,g.Case1
      ,g.Case2
      ,g.Case3
FROM DEV_DB.REPORTS.CURRENT_GAMES_VW g
LEFT JOIN DEV_DB.GAMES.GAMES_REVENUE_VW r
ON r.GameType = 
      (CASE
          WHEN g.GameType = '2' AND g.ExitDate < '2000-01-01' THEN 'B'
          WHEN g.GameType = '2' AND g.ExitDate >= '1990-12-31' THEN '2'
          WHEN g.GameType = '3' THEN 'M'
          WHEN g.GameType = '4' THEN 'N'
          ELSE g.GameType
       END)
LEFT JOIN DEV_DB.GAMES.GAME_TYPES_VW t
ON t.GameCode = g.AccountType
WHERE g.Game_CaseID IS NULL
AND g.ExitDate > '1995-12-31' 
AND g.AccountDate <= CURRENT_DATE

我尝试了多种选项,包括这个text,但仍然是同样的问题:

     WHERE g.ExitDate > COALESCE(TRY_TO_DATE(ExitDate, DATE('1995-12-31'))
     AND g.AccountDate <= CURRENT_DATE


     WHERE g.ExitDate > TO_DATE('1995-12-31', 'YYYY-MM-DD')
     AND g.AccountDate <= CURRENT_DATE


     WHERE g.ExitDate > COALESCE(TRY_TO_DATE(g.ExitDate), DATE('1995-12-31)) AS DateExit
     AND g.AccountDate <= CURRENT_DATE

如果有人能指出我可能遇到的问题的正确方向。谢谢!

sql snowflake-cloud-data-platform
1个回答
0
投票

我能够为所引用的四个表的定义生成脚本并创建这些表。我还能够将记录填充到这些表中。我能够成功运行您共享的脚本。 ExitDate 和 AccountDate 字段中的一个(或两个)的一条或多条记录中似乎存在无效值。 如果这些值经过验证,这个问题应该得到解决。

© www.soinside.com 2019 - 2024. All rights reserved.