我有两个日期列POST /test/demo_form.php HTTP/1.1
Host: w3schools.com
name1=value1&name2=value2
和Date A
。
我需要选择Date B
和Date A + 42 Days
中较大的(最近的)。
解决此问题的最佳方法是什么?
答案 0 :(得分:0)
对于最新日期,请使用MAX()
来查找A + 42天,请使用DATEADD()
。如果您可以提供表格结构和预期结果,我们将为您提供更好的帮助。
这是示例:
SELECT MAX([YourDateColumn])
FROM YourTable
WHERE [YourDateColumn] BETWEEN B AND DATEADD(DAY,42,A)
答案 1 :(得分:0)
我愿意尝试一下,希望对您有所帮助!
SELECT
MAX([a])
FROM
(SELECT DATEADD(DD,42,SoCreateDate) [a]
FROM UNIQUESOID
UNION ALL
SELECT SOSUBMISSIONDATE
FROM UNIQUESOID
) [x]
仅说明此脚本的作用;
创建一个组合的数据集(使用并集),以便两个日期都在同一列中,然后我们使用SELECT (MAX)
来从刚创建的数据集中选择最大值。
答案 2 :(得分:0)
您可以使用简单的CASE语句:
SELECT A, B, CASE WHEN DATEADD(DAY, 42, A) > B THEN DATEADD(DAY, 42, A) ELSE B END AS A42ORB
还有其他方式取决于SQL Server版本,例如:
SELECT A, B, CA.C
FROM t
CROSS APPLY (
SELECT MAX(V) AS C
FROM (VALUES
(DATEADD(DAY, 42, A)),
(B)
) AS VA(V)
) AS CA
或者:
SELECT A, B, CASE WHEN C > B THEN C ELSE B END
FROM t
CROSS APPLY (SELECT DATEADD(DAY, 42, A)) AS CA(C)
答案 3 :(得分:0)
我不确定您的问题是否被其他人很好地理解,所以让我为您提出以下解决方案:
SELECT
IIF(DATEADD(DAY,42,t0.A) > t0.B, DATEADD(DAY,42,t0.A), t0.B) AS MaxDate
FROM
YourTable AS t0
警告:如果日期中可能存在NULL值,则必须在IIF中处理该情况