SQL Server : comparing VARCHAR values



我正在尝试仅比较月和年。因此,我将其转换为Varchar。这是正确的吗?

(case 
    when s."AccMonth" >= 1 and s."AccMonth" <= 12 
        then cast(rtrim(s.accmonth) + s.accyear AS varchar) end)
>=  
cast(month(s.InitialChargeDate) as varchar) + cast(year(s.InitialChargeDate) as varchar) 
  • accmonth&amp;accyear是类型INT
  • InitialChargeDate是类型DATE

也许是一种更好的方法,就像:

s.AccMonth = MONTH(s.InitialChargeDate)
AND s.accyear = YEAR(s.InitialChargeDate)

注意:在没有长度规范的情况下,将默认长度为1。可能会影响您的结果。

您应该使用内置功能而不是铸造到varchar:

月:

SELECT MONTH('2007-04-30T01:01:01.1234567 -07:00');

返回4

年:

SELECT YEAR('2007-04-30T01:01:01.1234567-07:00');

返回2007

相关内容

  • 没有找到相关文章

最新更新