查询两个日期之间的记录,其中日期可能是 1900-01-01

Query a record between two dates, where dates might be 1900-01-01

想象一下。您需要查询您的定价数据 table 以找出给定特定日期的零件号的当前定价。你 table 的格式是这样的,如果 'from date' 是 '1900-01-01 00:00:00.000' 而你的 'to date' 是 '2021-06-07 00:00:00.000',那么这意味着 'to date' 之前的任何日期都是有效。

还有一条记录'from date' 2021-06-08 00:00:00.000'1900-01-01 00:00:00.000',表示日期之后的任何内容

这是table视觉效果

itemrelation fromdate todate amount
A123456 1900-01-01 00:00:00.000 2021-06-07 00:00:00.000 1578.300000000000
A123456 2021-06-08 00:00:00.000 1900-01-01 00:00:00.000 1586.300000000000

假设用户想查看今天的价格2022-03-24

查询运行不能

SELECT itemrelation, fromdate, todate, amount
  FROM [Ax2009Live].[dbo].[PRICEDISCTABLE] 
  where itemrelation = 'A123456'
  and fromDate <= '2022-03-24'
  and toDate >= '2022-03-24'

因为“1900”日期会阻止查询返回任何结果。

是否有某种类型的 CASE 语句可以解决这个问题?一些我不知道的内置 SQL 命令?

感谢您的帮助。

谢谢@HoneyBadger,

根据您的建议,查询如下。效果很好。

DECLARE @ITEMRELATION AS NVARCHAR(50)
SET @ITEMRELATION = 'A123456'

DECLARE @DATE AS DATETIME
SET @DATE = '2022-03-24'

SELECT itemrelation, fromdate, todate, amount
  FROM [Ax2009Live].[dbo].[PRICEDISCTABLE] 
  WHERE 
  itemrelation = @ITEMRELATION
  and fromDate <= @DATE
  and toDate >= @DATE
  OR 
  itemrelation = @ITEMRELATION
  and fromDate <= @DATE
  and toDate = '1900-01-01'
  OR 
  itemrelation = @ITEMRELATION
  and fromDate = '1900-01-01'
  and toDate >= @DATE