2011-08-16 4 views
1

今日の午前2時から午前2時の間に発生したすべてのログイン日(dd/mm/yyyy)と時刻(hh.mm)を検索するクエリを実行する必要があります。データベースのログイン時間は、mm-dd-yyyy hh.mm.ssの形式です。SQLの2つの特定の時間の間にデータを見つけるには

間違った日または時間外のデータを返す複数のselectおよびbetweenクエリを試しました。

+0

をあなたを助けることができ、あなたが試したクエリが何をしている、何ワットその結果、期待された結果は何でしたか? –

+1

あなたの日時はどのようなデータ型ですか?文字列データまたはネイティブの日付/時刻形式として格納されていますか? –

+0

Iveが試みました。ここで、datepart(hh、getdate() - 1)> 2とdatepart(hh、getdate())> 2の間のログインを選択してください。これは初めてのことで、今は完全に混乱しています。 – Withdalot

答えて

5

あなたが提供した情報に基づいて、私は唯一の一般的な例を与えることができますコメントから良い提案パー

SELECT * 
FROM  [YourTable] 
WHERE  [YourDate] BETWEEN '08-15-2011 02:00:00' AND '08-16-2011 02:00:00' 

** EDIT **

を、ここにあります再利用可能なバージョン:

SELECT * 
FROM  [YourTable] 
WHERE  [YourDate] BETWEEN DATEADD(DAY, DATEDIFF(DAY, 0, GETDATE()), 0) + '02:00' 
        AND DATEADD(DAY, DATEDIFF(DAY, 0, GETDATE()-1), 0) + '02:00' 
+0

他の日時から時間を取得する必要がある場合はどうすればよいですか? – Vinay

+0

私は申し訳ありません、それは私の質問ではなく、私はdownvoteしませんでした。私はほとんど質問にdownvote。しかし、私の要点は昨日であり、今日は異なる日付にすることができます。明日このクエリを実行する必要がある場合はどうすればよいですか? – Vinay

+0

あなたは行き​​ます。私もそれをupvoted。 – Vinay

1

と仮定すると、mysqlの:

SELECT * FROM your_table 
WHERE STR_TO_DATE(your_date, '%m-%d-%Y %H.%i.%s') BETWEEN 
DATE_SUB(STR_TO_DATE(DATE_FORMAT(NOW(), '%m-%d-%Y'), '%m-%d-%Y'), INTERVAL 22 HOUR) AND 
DATE_ADD(STR_TO_DATE(DATE_FORMAT(NOW(), '%m-%d-%Y'), '%m-%d-%Y'), INTERVAL 2 HOUR) 

私は確かに良い方法があります。

1

私たちが使用している場合は、次のようにクエリがすべてのレコードを返しません...

SELECT * 
FROM  [YourTable] 
WHERE  [YourDate] BETWEEN DATEADD(DAY, DATEDIFF(DAY, 0, GETDATE()), 0) + '02:00' 
       AND DATEADD(DAY, DATEDIFF(DAY, 0, GETDATE()-1), 0) + '02:00' 

最古の日付が最初にする必要がありますように、我々は、節間使用していると、次のようにクエリになる...

SELECT * 
FROM  [YourTable] 
WHERE  [YourDate] BETWEEN DATEADD(DAY, DATEDIFF(DAY, 0, GETDATE()-1), 0) + '02:00' 
       AND DATEADD(DAY, DATEDIFF(DAY, 0, GETDATE()), 0) + '02:00' 
0

これはまた、あなたのデータの構造は何

where pt.status in (1) 
    and pt.is_visible in ('t') 
    and pt.merchant in (0) 
    and (date(pt.created_at+'05:30') >= current_date-2 
      and extract(hour from(pt.created_at+'05:30')) >=17) 
    and ((pt.created_at+'05:30') <= current_date-1 
      and extract(hour from(pt.created_at+'05:30')) <=17) 
関連する問題