查询两个日期之间的记录,其中日期可能是 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
想象一下。您需要查询您的定价数据 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