首页 > 解决方案 > 当我在关闭位置设置特定日期时,它可以工作,但是当我更改年份时,它不起作用。为什么?

问题描述

当我在 where 子句中过滤到 1/1/2020 时,查询有效。当我将年份更改为 2019 年时,出现此错误:

从字符串转换日期和/或时间时转换失败

为什么它适用于 2020 年 1 月 1 日而不是 2019 年 1 月 1 日?matteropendate 列是一个日期列——我检查了。

WITH aa (MatterNumber, claim_cat_NJS, ClaimCategoriesMulti) AS 
   (
    SELECT
      MatterNumber
      ,LEFT(ic.ClaimCategories, CHARINDEX(CHAR(10), ic.ClaimCategories + CHAR(10) ) - 1)
      ,STUFF(ic.ClaimCategories, 1, CHARINDEX( CHAR(10) , ic.ClaimCategories + CHAR(10) ), '')
    FROM cases AS ic

    UNION ALL

    SELECT
      aa.MatterNumber
      ,LEFT(aa.ClaimCategoriesMulti,CHARINDEX(CHAR(10),aa.ClaimCategoriesMulti+CHAR(10)
      ,STUFF(aa.ClaimCategoriesMulti, 1, CHARINDEX(CHAR(10), aa.ClaimCategoriesMulti + CHAR(10)), '')
    FROM aa
    WHERE 1 = 1
      AND aa.ClaimCategoriesMulti > ''
    )
Select *

FROM cases AS c
LEFT JOIN aa ON c.matterNumber = aa.matterNumber

WHERE 1 = 1
  AND c.MatterOpenDate > '1/1/2019' /*this line of code results in error message whenever changed to a different year*/

标签: sql

解决方案


您需要使用格式

WHERE DateField >= '2020-01-01'

请记住时间组件,如果它是 DateTime


推荐阅读