1

英国ベースのプロジェクトに取り組んでいます。

素敵な変数を入れて、月曜日から金曜日までの最終営業日の開始日と終了日を教えてくれます。残念ながら、開始日時を一日の始まりにし、終了日を一日の終わりにしたかったのです。これを実現するには、どのような変更を加えることができますか?

SET @Startdate =
  ( CASE
    WHEN DATEPART(WEEKDAY, @Startdate) = 7
      THEN DATEADD(DAY, -2, @Startdate)
    WHEN DATEPART(WEEKDAY, @Startdate) = 1
      THEN DATEADD(DAY, (-2 - DATEPART(WEEKDAY, @Startdate)), @Startdate)
    ELSE
      DATEADD(DAY, -1, @Startdate)
  END )

SET @Enddate = 
  CASE
    WHEN DATEPART(WEEKDAY, @Enddate) = 7
      THEN DATEADD(DAY, -2, @Enddate)
    WHEN DATEPART(WEEKDAY, @Enddate) = 1
      THEN DATEADD(DAY, (-2 - DATEPART(WEEKDAY, @Enddate)), @Enddate)
    ELSE
      DATEADD(DAY, -1, @Enddate) 
  END

print @Startdate 
print @Enddate

結果 :

2013 年 2 月 26 日 午前 0 時
2013 年 2 月 26 日 午前 0 時

Feb 26 2013 00:00までが必要なFeb 27 2013 00:00ので、火曜日の終日 (今日実行する場合は最終営業日) をカバーします。

4

2 に答える 2

1

実際には12:00AMは00:00です。必要に応じて、別の形式に変換する必要があります(http://msdn.microsoft.com/en-us/library/ms187928.aspx)。

2月26日の12:00AMに1日を追加すると、2月27日の12:00AMが2月27日の00:00になります。

于 2013-02-27T18:21:54.750 に答える
1

大雑把な Google 検索 (これには多くの優れた UDF があります) を実行する場合、これは解決された問題ですが、コードをそのまま使用するには、26 日の 0:00 から 27 日の 0:00 が本当に必要な場合は @Enddate の計算に 1 つ追加するだけです。 00 (または、23:59 が必要な場合は、Kenneth Fisher が提案するように 1 のすぐ下を追加します)。

于 2013-02-27T18:25:37.497 に答える