可能這是一個簡單的答案,但我不知道,我該如何確保出發日期爲抵達後。出發日期後到達日期
感謝
韋恩
DATEADD(day, ABS(CHECKSUM(NEWID()) % 365), '1 Jan 2010') as ArrivalDate,
DATEADD(day, ABS(CHECKSUM(NEWID()) % 365), '1 Jan 2010') as DepatureDate,
可能這是一個簡單的答案,但我不知道,我該如何確保出發日期爲抵達後。出發日期後到達日期
感謝
韋恩
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