DateTimeフィールドが前月の開始から終了の間であることを指定するwhereステートメントを実行しようとしています。DateTimeを時刻付きで取得する23:59:59
これを行うには、前月の最初の日に00:00:00の時間があり、前月の最後の日が23:59:59の時間であることを指定する必要があります。この第2の条件は私に頭痛を与えている
..
誰かが私を助けることはできますか?
乾杯
MSSQL 2008
DateTimeフィールドが前月の開始から終了の間であることを指定するwhereステートメントを実行しようとしています。DateTimeを時刻付きで取得する23:59:59
これを行うには、前月の最初の日に00:00:00の時間があり、前月の最後の日が23:59:59の時間であることを指定する必要があります。この第2の条件は私に頭痛を与えている
..
誰かが私を助けることはできますか?
乾杯
MSSQL 2008
試してみてください。
SELECT DATEADD(ms, -3, '2011-07-20')
これは、今日の最後の午後11時59分59秒になるだろう。
なぜ3ミリ秒ですか?これは、Microsoft SQL ServerのDATETIME列に最大で3ミリ秒の解像度(変更されないもの)があるためです。だから私たちがやっていることは3ミリ秒を引くことです
実際にあなたに '23:59:59.997'が届きます – gbn
また、同等のない '<' 未満を使用することができます。あなたが23:59:59を必要としないように。
例: DateCreated < '20111201午前〇時00分00秒'
+1これはあなたのやり方です。あなたが23:59:59に行くだけなら、23:59:59.000と23:59:59.999の間の秒を見過ごすでしょう。ミリ秒を指定した場合でも、<=ではなく<を使用すると、それはちょうどきれいです。 –
@Joel Coehoornしかし、00:00:00以外の日付が指定されている場合は、最初に切り捨ててから1日を追加する必要があります。その後、3ミリ秒を引くよりもきれいに見えません。 <=さらに、それはあなたに<を使用させることを強要します。そして、私の意見では、間はずっときれいで、包括的なので、最後のミリ秒を使わなければならないでしょう。 –
私はこれらの2つの方法のうちの1つを使ってDATETIMEフィールドで比較を行います EX:ある日のユーザーログを取得するすなわち、今日の日付までの午前12時00分00秒AMで今日の日付からではなく、午前12時00分00秒PM
DECLARE @FromDate datetime
DECLARE @ToDate datetime
SET @FromDate = GETDATE()
SET @ToDate = GETDATE()
Print '------------------------ '
PRINT @FromDate
PRINT @ToDate
SET @FromDate = CONVERT(DATETIME, CONVERT(varchar(11),@FromDate, 111) + ' 00:00:00', 111)
SET @ToDate = CONVERT(DATETIME, CONVERT(varchar(11),@ToDate, 111) + ' 23:59:59', 111)
Print '------------------------ '
PRINT @FromDate
PRINT @ToDate
DECLARE @TEST_FROM DATETIME
SET @TEST_FROM = dateadd(month,((YEAR(@FromDate)-1900)*12)+MONTH(@FromDate)-1,DAY(@FromDate)-1) + ' 12:00:00'
DECLARE @TEST_TO DATETIME
SET @TEST_TO = dateadd(month,((YEAR(@ToDate)-1900)*12)+MONTH(@ToDate)-1,DAY(@ToDate)-1) + ' 23:59:59'
Print '------------------------ '
PRINT @TEST_FROM
PRINT @TEST_TO
でこれは
------------------------
Dec 28 2011 3:18PM
Dec 28 2011 3:18PM
------------------------
Dec 28 2011 12:00AM
Dec 28 2011 11:59PM
------------------------
Dec 28 2011 12:00PM
Dec 28 2011 11:59PM
参照SQLクエリエディタ画面で、次の印刷されます の私の経験からです変換し、他の方法はhttp://weblogs.sqlteam.com/jeffs/archive/2007/01/02/56079.aspx が
を得るためにdatetimeデータ型を使用するため、このクエリを試してみてください:)楽しいし、このリンクからである
2018年1月29日23:59:59.997
select dateadd(ms, -3, (dateadd(day, +1, convert(varchar, GETDATE(), 101))))
月を比較する必要がある場合は、datetimeから月を 'month()'で抽出するのはなぜですか? –