月曜日のスクリプトの下に3日戻って、他の日は1日後に戻ります。 正しく動作しないと思います。 修正できますか?金曜のデータを取得する月曜日
MyDate>=dateadd(dd,case substring(datename(dw,getdate()),1,3)
when 'MON' then -3 else -1 end,getdate())
月曜日のスクリプトの下に3日戻って、他の日は1日後に戻ります。 正しく動作しないと思います。 修正できますか?金曜のデータを取得する月曜日
MyDate>=dateadd(dd,case substring(datename(dw,getdate()),1,3)
when 'MON' then -3 else -1 end,getdate())
私はあなたにも、時間の部分を持っているDATEADD
に3番目のパラメータとしてGETDATE()
を使用しているので、それはかもしれないと思います。
3日後(実際には3 * 24時間遅れ)になりますが、3 * 24時間前に金曜日や何か起きたことはありません。
月曜日の午前11時45分にクエリを実行しているとすると、金曜日の午前11時45分からのすべてのデータが取得されますが、その前のデータはありません。データ。
以下は、金曜日(一日中)に発生したすべてのデータ/行を取得するコードの修正版です。 、この問題を解決するだけで迅速なハックを行うと、これまでにgetdate()
を変換し、一日の始まりを含む日付/時刻の組み合わせを生成するために、DATETIMEするために
MyDate>= dateadd(dd, case
substring(datename(dw,getdate()),1,3)
when 'MON'
then -3
else -1 end
,cast(cast(getdate() as date) as datetime))
。
select
getdate()
, cast(getdate() as date)
, cast(cast(getdate() as date) as datetime)
2016-08-24 13:05:11.603 | 2016-08-24 | 2016-08-24 00:00:00.000
なぜdownvote?私は私の答えが間違っているのが不思議です。 –
申し訳ありませんが、私は間違ってそれをチェックしました。私はちょうどそれに正解をマークした。ご協力いただきありがとうございます。 – user6751695
@ user6751695さて、もしあなたが意味していないのであれば、ダウンボトムを解除してください:) –
MyDate>=case
when datename(dw,getdate())='Monday'
then dateadd(day,-3,cast(getdate() as date))
else dateadd(day,-1,cast(getdate() as date)) end
あなたは、クエリの下に使用することができます
は、ここでそれが何をするかの簡単な例です。
select case when datepart(weekday ,cast((floor(cast(getdate() as float))) as datetime)) = 2
then (select cast((floor(cast(getdate() as float))-3) as datetime))
else (select cast((floor(cast(getdate() as float))-1) as datetime))
end as Date
「正しく動作しないと思う」とはどういう意味ですか?どのような結果やエラーが表示されますか? – Egl
金曜日に発生したすべてのデータをキャプチャしません。一部のデータがありません! – user6751695