web-dev-qa-db-ja.com

SQL Serverの特定の時間範囲クエリ

私は特定の時間範囲を照会しようとしています:

  • つまり、2009年3月1日-2009年3月31日
  • 毎日午前6時から午後10時の間
  • 火/水/木のみ

特定の範囲のデータを取得できることを確認しましたが、これは最初から最後までであり、これはかなり具体的です。これを直接助けてくれるSQL Serverコマンドはありませんでした。

this を見たことがありますが、この範囲に対して十分に具体的だとは思いません。

ありがとう!

19
Fry

選択基準の一部として、これら3つすべてが必要であると想定しています。どこかにいくつかのステートメントが必要になりますが、それらは質問に含まれるリンクに似ています。

SELECT *
  FROM MyTable
  WHERE [dateColumn] > '3/1/2009' AND [dateColumn] <= DATEADD(day,1,'3/31/2009') 
        --make it inclusive for a datetime type
    AND DATEPART(hh,[dateColumn]) >= 6 AND DATEPART(hh,[dateColumn]) <= 22 
        -- gets the hour of the day from the datetime
    AND DATEPART(dw,[dateColumn]) >= 3 AND DATEPART(dw,[dateColumn]) <= 5 
        -- gets the day of the week from the datetime

お役に立てれば。

29
Giggy

あなたはこれを試すことができます(私は今日SQLサーバーを持っていないので、構文を確認できません、申し訳ありません)

select attributeName
  from tableName
 where CONVERT(varchar,attributeName,101) BETWEEN '03/01/2009' AND '03/31/2009'
   and CONVERT(varchar, attributeName,108) BETWEEN '06:00:00' AND '22:00:00'
   and DATEPART(day,attributeName) BETWEEN 2 AND 4
6
northpole

私(PGadmin 4でPostgreSQLを使用)は、次のように、2017年11月21日正午以降の結果を照会しました(データベースの時間の表示形式を考慮):

select * from Table1 where FIELD >='2017-11-21 12:00:00' 
1
Z.storch
select * from table where 
(dtColumn between #3/1/2009# and #3/31/2009#) and 
(hour(dtColumn) between 6 and 22) and 
(weekday(dtColumn, 1) between 2 and 4) 
0