1

この質問には多くの重複がありますが、うまくいきませんでした。

これが問題です。データベースに保存されているタイムスタンプに変換された2つの異なる時刻と同じ日付があります。

Timestamp 1 = 1376983800 (2013-08-20 15:30:00)
Timestamp 2 = 1376987400 (2013-08-20 16:30:00)

時間を無視して日付と比較する必要があるこれらの 2 つの値があります。

視覚表現

そうあるべきだとしましょう2013-08-20 = 2013-08-20

いいえ

2013-08-20 15:30:00 = 2013-08-20 16:30:00

さて、質問はクエリを使用してそれを行う方法ですか?

ただし、以下の WHERE 句のクエリは機能しません。

WHERE DAYOFMONTH(FROM_UNIXTIME(1376983800)) = DAYOFMONTH(FROM_UNIXTIME(1376987400))

WHERE DAY(FROM_UNIXTIME(1376983800)) = DAY(FROM_UNIXTIME(1376987400))

WHERE DAYOFYEAR(FROM_UNIXTIME(1376983800)) = DAYOFYEAR(FROM_UNIXTIME(1376987400))

助けていただければ幸いです。

4

2 に答える 2

1
SELECT columns
FROM table
WHERE DATE(FROM_UNIXTIME(stamp1)) = DATE(FROM_UNIXTIME(stamp2))

また、WHERE上記の句はすべて同等でWHERE TRUEあり、すべての列を返します。

また、あなたWHEREの s が実際に見ているものをテストするには、次のようなことを試してください:

SELECT DAYOFMONTH(FROM_UNIXTIME(1376983800)), DAYOFMONTH(FROM_UNIXTIME(1376987400));

また

SELECT DATE(FROM_UNIXTIME(1376983800)), DATE(FROM_UNIXTIME(1376987400))
于 2013-08-22T20:47:01.207 に答える
1

Unixtime では 1 日あたり 86400 秒なので、DATE/TIMESTAMP にキャストする必要はありません。

WHERE ts1 - mod(ts1, 84000) = ts2 - mod(ts2, 84000)

または ts1 が INTEGER の場合

WHERE ts1/86400 = ts2/86400
于 2013-08-22T20:53:25.597 に答える