次のコードで、出発日が到着日よりも大きいことを確認するにはどうすればよいですか。
SELECT ArrivalDate, DATEADD(day, RAND(checksum(NEWID()))*1.5
* LengthOfStay.LengthofStay, ArrivalDate) AS DepartureDate
FROM Bookings, LengthOfStay
ORDER BY ArrivalDate
ありがとう
ウェイン
次のコードで、出発日が到着日よりも大きいことを確認するにはどうすればよいですか。
SELECT ArrivalDate, DATEADD(day, RAND(checksum(NEWID()))*1.5
* LengthOfStay.LengthofStay, ArrivalDate) AS DepartureDate
FROM Bookings, LengthOfStay
ORDER BY ArrivalDate
ありがとう
ウェイン
DATEADD
整数を取ります...ランダム化から返された小数値は切り捨てられます。したがって、 に追加0
するだけArrivalDate
で、2 つの日付が等しくなる可能性があります。
1
ランダム化に最小限の値を追加するだけで、これを修正できます。
SELECT ArrivalDate, DATEADD(day, 1 + RAND(checksum(NEWID()))*1.5
* LengthOfStay.LengthofStay, ArrivalDate) AS DepartureDate
FROM Bookings, LengthOfStay
ORDER BY ArrivalDate
このクエリを試してください
SELECT * FROM
(
SELECT
ArrivalDate,
DATEADD(day, RAND(checksum(NEWID()))*1.5 * LengthOfStay.LengthofStay, ArrivalDate) AS DepartureDate
FROM
Bookings, LengthOfStay
) a
WHERE a.DepartureDate > a.ArrivalDate
ORDER BY a.ArrivalDate