MySQLで簡単な日付と時刻の比較をしたい.次のようなもの:
IF( NOW() > Ticket.fixTime )
日付は次の形式です
IF(2012-09-25 08:47:25 > 2012-09-24 18:15:16)
ただし、これは間違った結果を返します。
これを達成する方法について何か提案はありますか?
ありがとう!
あなたはこの方法を与える必要があります:
IF( TO_SECONDS(NOW()) > TO_SECONDS(Ticket.fixTime) )
を使用TO_SECONDS
して時間を秒に変換し、比較できます。
IF('TO_SECONDS(2012-09-25 08:47:25') > TO_SECONDS('2012-09-24 18:15:16'))
出力はbinary
、つまり、 または のいずれ1
か0
です。
mysql> SELECT TO_SECONDS('2012-09-25 08:47:25') > TO_SECONDS('2012-09-24 18:15:16');
+-----------------------------------------------------------------------+
| TO_SECONDS('2012-09-25 08:47:25') > TO_SECONDS('2012-09-24 18:15:16') |
+-----------------------------------------------------------------------+
| 1 |
+-----------------------------------------------------------------------+
1 row in set (0.00 sec)
mysql> SELECT TO_SECONDS('2012-09-25 08:47:25') < TO_SECONDS('2012-09-24 18:15:16');
+-----------------------------------------------------------------------+
| TO_SECONDS('2012-09-25 08:47:25') < TO_SECONDS('2012-09-24 18:15:16') |
+-----------------------------------------------------------------------+
| 0 |
+-----------------------------------------------------------------------+
1 row in set (0.00 sec)
IF
調子IF
条件は次のように使用する必要があります。
mysql> SELECT IF (TO_SECONDS('2012-09-25 08:47:25') < TO_SECONDS('2012-09-24 18:15:16'), 'True', 'False');
+---------------------------------------------------------------------------------------------+
| IF (TO_SECONDS('2012-09-25 08:47:25') < TO_SECONDS('2012-09-24 18:15:16'), 'True', 'False') |
+---------------------------------------------------------------------------------------------+
| False |
+---------------------------------------------------------------------------------------------+
1 row in set (0.00 sec)
mysql> SELECT IF (TO_SECONDS('2012-09-25 08:47:25') > TO_SECONDS('2012-09-24 18:15:16'), 'True', 'False');
+---------------------------------------------------------------------------------------------+
| IF (TO_SECONDS('2012-09-25 08:47:25') > TO_SECONDS('2012-09-24 18:15:16'), 'True', 'False') |
+---------------------------------------------------------------------------------------------+
| True |
+---------------------------------------------------------------------------------------------+
1 row in set (0.00 sec)
Mysql IFステートメントは次のように使用されます
IF(condition, valueA, valueB) // valueA for condition is true otherwise valueB
したがって、次のように使用する必要があります。
SELECT IF(NOW() > Ticket.fixTime, 'what you want to show', 'i do not know')
FROM your_table
IF
または、と と混同していwhere
ます。
SELECT * FROM your_table WHERE NOW() > Ticket.fixTime