出发日期后到达日期
问题描述:
可能这是一个简单的答案,但我不知道,我该如何确保出发日期为抵达后。出发日期后到达日期
感谢
韦恩
DATEADD(day, ABS(CHECKSUM(NEWID()) % 365), '1 Jan 2010') as ArrivalDate,
DATEADD(day, ABS(CHECKSUM(NEWID()) % 365), '1 Jan 2010') as DepatureDate,
答
您可以通过使用DATEDIFF ('day', DepatureDate, ArrivalDate)
检查。
这样,您就可以减去从DepatureDate的ArrivalDate。如果您得到否定答案,则在ArrivalDate之前设置DepatureDate。
看一看这个链接:
编辑:
DECLARE @var1 int;
DECLARE @var2 int;
SET @var1 = ABS(CHECKSUM(NEWID()) % 365);
SET @var2 = ABS(CHECKSUM(NEWID()) % ([email protected]));
select @var1, @var2, DATEADD(day, @var1, '1 Jan 2010') as ArrivalDate, DATEADD(day, @var2, DATEADD(day, @var1, '1 Jan 2010')) as DepatureDate
答
我认为最简单的方法是使用case
声明:
(case when ArrivalDate < DepartureDate then 1 else 0 end) as IsArrivalBefore
这也具有标准语法的优点,并被alm理解所有数据库。 (你的问题没有提到你正在使用的数据库。)
你是什么意思?您是否希望防止在不符合条件的情况下插入记录?你想排除不符合条件的结果吗?您是否希望查询使用出发和到达日期的后期? – 2013-02-15 14:04:45
添加更多天,以便在您抵达ArrivalDate之前添加更多出发日期。您应该probaly *也*在基表上有一个CHECK约束。 – 2013-02-15 14:05:22
您好马林/嘘声 如果我到达01/01/2010出发日期只能=> 02/01/2010,所以当数是随机生成的只会做到这一点。 – wafw1971 2013-02-15 14:11:05