1

这可能是一个简单的答案,但我不知道,我如何确保出发日期在到达日期之后。

谢谢

韦恩

DATEADD(day, ABS(CHECKSUM(NEWID()) % 365), '1 Jan 2010') as ArrivalDate,
DATEADD(day, ABS(CHECKSUM(NEWID()) % 365), '1 Jan 2010') as DepatureDate,
4

2 回答 2

1

您可以使用DATEDIFF ('day', DepatureDate, ArrivalDate).

这样,您可以从 DepatureDate 中减去 ArrivalDate。如果您得到否定的答案,则 DepatureDate 在 ArrivalDate 之前。

看看这个链接:

日期差异

编辑:

DECLARE @var1 int;
DECLARE @var2 int;
SET @var1 = ABS(CHECKSUM(NEWID()) % 365);
SET @var2 = ABS(CHECKSUM(NEWID()) % (365-@var1));
select @var1, @var2, DATEADD(day, @var1, '1 Jan 2010') as ArrivalDate, DATEADD(day, @var2, DATEADD(day, @var1, '1 Jan 2010')) as DepatureDate
于 2013-02-15T14:11:06.720 回答
0

我认为最简单的方法是使用case语句:

(case when ArrivalDate < DepartureDate then 1 else 0 end) as IsArrivalBefore

这还具有标准语法和几乎所有数据库都可以理解的优点。(您的问题没有提到您正在使用的数据库。)

于 2013-02-15T16:23:12.407 回答