1

MySQLで簡単な日付と時刻の比較をしたい.次のようなもの:

IF( NOW() > Ticket.fixTime )日付は次の形式です

IF(2012-09-25 08:47:25  >  2012-09-24 18:15:16)

ただし、これは間違った結果を返します。

これを達成する方法について何か提案はありますか?

ありがとう!

4

2 に答える 2

1

あなたはこの方法を与える必要があります:

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、つまり、 または のいずれ10です。

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)
于 2012-09-25T07:58:59.863 に答える
0

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
于 2012-09-25T08:00:37.697 に答える