Wie man Zieldaten als nächsten Mittwoch bei 1700 in SQL server 2008 findet

Wir haben ein Paketversandsystem, das die empfangenen Pakete als ParcelReceivedDate, ein datetime-Feld, aufzeichnet.

Wir müssen ein Ziellieferdatum und -zeit so definieren, dass jedes Paket, das am Samstag oder Sonntag eingegangen ist, am nächsten Mittwoch 1700 GMT ein Ziellieferdatum haben muss.

CASE WHEN Priority = 'Normal' and DATENAME(weekday,ParcelReceivedDate) IN ('Saturday') THEN ?? WHEN Priority = 'Normal' and DATENAME(weekday,ParcelReceivedDate) IN ('Sunday') THEN ?? Else DATEADD(hour,24,ParcelReceivedDate) END as ParcelTargetDate 

Versuche dies:

 CASE WHEN Priority = 'Normal' and DATENAME(weekday,ParcelReceivedDate) IN ('Saturday') THEN dateadd(second, -datepart(second, ParcelReceivedDate), dateadd(minute, -datepart(minute, ParcelReceivedDate), dateadd(hour, 17 - datepart(hour, ParcelReceivedDate), dateadd(day, 4, ParcelReceivedDate) ) ) ) WHEN Priority = 'Normal' and DATENAME(weekday,ParcelReceivedDate) IN ('Sunday') THEN dateadd(second, -datepart(second, ParcelReceivedDate), dateadd(minute, -datepart(minute, ParcelReceivedDate), dateadd(hour, 17 - datepart(hour, ParcelReceivedDate), dateadd(day, 3, ParcelReceivedDate) ) ) ) ELSE DATEADD(hour,24,ParcelReceivedDate END as ParcelTargetDate 

Sie wissen, wenn Sie am Samstag oder Sonntag sind, also fügen Sie Offset Tage hinzu, um Mittwoch zu erreichen