0

我坐着有点问题..

在我的数据库中,我有一个包含 2 个日期时间的表。

TABLE1 有turn_time作为 dateTime 值0000-00-00 23:59:59

TABLE2 将last_move作为 DateTime 值2013-09-23 14:20:19

如果 turn_time + last_move < NOW(),我想在 SQL 中计算。

但我回来的结果看起来像这样: 40261846333938.000000

如果 turn_time + last_move < NOW() 我如何获得当前行的简单选择?

我的 SQL:

SELECT * FROM active_games 
        INNER JOIN games 
        ON active_games.fk_games_id = games.games_id 
        INNER JOIN product
        ON active_games.fk_product = product.product_id
        INNER JOIN users
        ON active_games.fk_user_id_turn = users.user_id
        INNER JOIN user_profile 
        ON users.user_id = user_profile.fk_user_id
        WHERE turn_time + last_move < NOW()

谢谢你的时间。

4

1 回答 1

1

你可以试试这个WHERE子句:

WHERE UNIX_TIMESTAMP(turn_time) + UNIX_TIMESTAMP(last_move) < UNIX_TIMESTAMP(NOW())

的文档NOW()说明如下:

返回当前日期和时间作为 'YYYY-MM-DD HH:MM:SS' 或 YYYYMMDDHHMMSS.uuuuuu 格式的值,具体取决于函数是在字符串还是数字上下文中使用。

由于NOW()在您的WHERE子句中的数字上下文中使用,它返回数值(YYYYMMDDHHMMSS.uuuuuu格式),并尝试将它们与 DateTime 进行比较turn_time + last_move。将所有内容转换为 Unix 时间戳应该允许比较正常工作。

希望这可以帮助!

于 2013-09-23T17:20:49.950 回答