0

2011 年 1 月 1 日など、すべての日付をフィルター処理する必要があります。

select * from table_name where date > '01/01/2011';

問題は、dateフィールドが値を格納intすることです。以下に例を示します。

1339011098
1336717439
1339010538

SQLクエリのdateフィールドを(int形式から日付形式に)変換する方法、上記の日付と比較できるように、有効な日付に変換する必要があります。

ありがとう。

4

3 に答える 3

1

あなたは間違った方向に進んでいます。何百万ものレコードを変換して比較するのではなく、一度だけ実行する必要があるターゲット日付を変換してみてください。これらは UNIX タイムスタンプのように見えるため、結果のクエリは次のようになります。

SELECT  * FROM `Table_name` WHERE date > unix_timestamp('01/01/2011')

または、これを制御できる場合は、ISO 日付形式を使用してみてください。これにより、2013 年 3 月 2 日などのヨーロッパの日付形式との混同を避けることができます。

SELECT  * FROM `Table_name` WHERE date > unix_timestamp('2011-01-01')
于 2013-09-19T20:21:39.740 に答える
0

まず、日付値を整数として保存しないでください。それが管理下にある場合は、データベースと、日付の代わりにその列に整数値を挿入するクエリを修正することを目標にする必要があります。

現在のセットアップで使用する必要がある 2 つの日付関数UNIX_TIMESTAMP()は、日付値をFROM_UNIXTIME()受け入れてエポック タイムスタンプ整数を返すものと、エポック タイムスタンプ整数を受け入れて日付値を返すものです。

あなたの例では、次のいずれかを使用できます。

SELECT * FROM table_name WHERE FROM_UNIXTIME(date_field) > '01/01/2011';

また

SELECT * FROM table_name WHERE date_field > UNIX_TIMESTAMP('01/01/2011');

FROM_UNIXTIMEただし、次のようなより高度なクエリを簡素化するため、一般的なルールとして使用することをお勧めします。

SELECT * FROM table_name WHERE 
FROM_UNIXTIME(date_field)
BETWEEN '01/01/2013' AND '04/01/2013';

基本的に、日付フィールドが実際に日付型の値を格納するまで、クエリはフィールド値を で変換する必要がありますFROM_UNIXTIME

于 2013-09-19T20:36:49.570 に答える
0

使用できますUNIX_TIMESTAMP()

select * 
from table_name 
where date > unix_timestamp('2011-01-01')

または逆に使用FROM_UNIXTIME()

select * 
from table_name 
where FROM_UNIXTIME(date, "%Y-%m-%d") > '2011-01-01'
于 2013-09-19T20:19:56.887 に答える