4

datetime格納されているにもかかわらず、データ型の日付フィールドがありますが、クエリの where 条件でH:s:i使用している検証で考慮したくありませんがCURDATE()、たとえば、「H:S:i」が考慮されています

SELECT ('2013-01-10 05:10:50' <= CURDATE()) FROM dual

2013-01-10 05:10:50上記のクエリは false(0) を返しますが、過去の時間であるため true(1) ではないのはなぜですか。要するに、「H:s:i」を保存したいのですが、どのMySql関数が適しているかを検証する際に考慮すべきではありませんか?

以下のコンテンツを更新

これらの関数は検証中に考慮されるため、使用NOW()したくありません。SYSDATE()H:s:iCURDATE()CURDATE()

4

5 に答える 5

2

クエリが返されるのは、日付と時刻ではなく日付が返されるfalseためです。単に日付を返すということは、日付と時刻と比較するときを意味します。したがって、前ではありません。CURDATE()2012-01-10 00:00:00CURDATE()2013-01-10 05:10:50

- を使用することをお勧めしますNOW()。これは日付と時刻を返します。

NOW()ここのドキュメント

于 2013-01-10T09:07:35.997 に答える
2

CURDATE()には時刻が含まれていないため、00:00:00 または 9/10 境界の真夜中になります。このチェックを行いたい場合は、NOW()代わりに使用してください

于 2013-01-10T09:08:40.797 に答える
1

これを試すことができます:

SELECT DATE('2013-01-10 05:10:50') <= CURDATE() FROM DUAL;

SELECT '2013-01-10 05:10:50' <= DATE_FORMAT(NOW(), '%Y-%m-%d 23:59:59') FROM DUAL;
于 2013-01-10T09:20:56.993 に答える
0

now()の代わりに使用しcurdate()ます。

now()は現在の日付と時刻curdate()返しますが、比較のために日付時刻にキャストされ、時刻コンポーネントが割り当てられた現在の日付を返します。00:00:00

于 2013-01-10T09:09:54.823 に答える
0

now() または current_timestamp を使用する必要があります

于 2013-01-10T09:12:00.440 に答える