今日の午前2時から午前2時の間に発生したすべてのログイン日(dd/mm/yyyy
)と時刻(hh.mm
)を検索するクエリを実行する必要があります。データベースのログイン時間は、mm-dd-yyyy hh.mm.ss
の形式です。SQLの2つの特定の時間の間にデータを見つけるには
間違った日または時間外のデータを返す複数のselect
およびbetween
クエリを試しました。
今日の午前2時から午前2時の間に発生したすべてのログイン日(dd/mm/yyyy
)と時刻(hh.mm
)を検索するクエリを実行する必要があります。データベースのログイン時間は、mm-dd-yyyy hh.mm.ss
の形式です。SQLの2つの特定の時間の間にデータを見つけるには
間違った日または時間外のデータを返す複数のselect
およびbetween
クエリを試しました。
あなたが提供した情報に基づいて、私は唯一の一般的な例を与えることができますコメントから良い提案パー
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'
と仮定すると、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)
私は確かに良い方法があります。
私たちが使用している場合は、次のようにクエリがすべてのレコードを返しません...
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'
これはまた、あなたのデータの構造は何
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)
をあなたを助けることができ、あなたが試したクエリが何をしている、何ワットその結果、期待された結果は何でしたか? –
あなたの日時はどのようなデータ型ですか?文字列データまたはネイティブの日付/時刻形式として格納されていますか? –
Iveが試みました。ここで、datepart(hh、getdate() - 1)> 2とdatepart(hh、getdate())> 2の間のログインを選択してください。これは初めてのことで、今は完全に混乱しています。 – Withdalot