Mysql 此sql似乎删除了字段大于0的所有行

Mysql 此sql似乎删除了字段大于0的所有行,mysql,sql,Mysql,Sql,因此,基本上,我试图在我的销售页面上获得一个自动到期,我有这个sql DELETE FROM `game_sales` WHERE `expires` <= NOW() AND `expires` > 0 删除 来自“游戏销售” 其中`expires`0 它似乎会删除expires>0的所有行,而不管expires是否低于当前时间 如何停止此操作?您的SQL查询只选择数据,不删除数据。 WHERE条件返回与这两个条件匹配的数据,因此我将查找expires

因此,基本上,我试图在我的销售页面上获得一个自动到期,我有这个sql

DELETE 
FROM `game_sales` 
WHERE `expires` <= NOW() 
  AND `expires` > 0
删除
来自“游戏销售”
其中`expires`0
它似乎会删除
expires>0
的所有行,而不管
expires
是否低于当前时间


如何停止此操作?

您的SQL查询只选择数据,不删除数据。 WHERE条件返回与这两个条件匹配的数据,因此我将查找expires
expires
给出过期日期正好在现在之前的所有条目

expires>0
提供大于0的所有过期值

编辑: 用整数时间你已经有问题了。
NOW()
返回
datetime
数据类型中的值。 与int相比,它应该比较时间的毫秒值


您是否以毫秒为单位存储了时间?

您的SQL查询只选择数据,不删除数据。 WHERE条件返回与这两个条件匹配的数据,因此我将查找expires
expires
给出过期日期正好在现在之前的所有条目

expires>0
提供大于0的所有过期值

编辑: 用整数时间你已经有问题了。
NOW()
返回
datetime
数据类型中的值。 与int相比,它应该比较时间的毫秒值


您是否以毫秒为单位存储了时间?

您无法将
INT
DATETIME
进行比较(这就是
NOW()
返回的结果)

如果您的
过期
实际上是一个时间戳,您可以:


  • 将时间戳转换为
    DATETIME
    FROM_UNIXTIME()
    其中FROM_UNIXTIME(expires)您根本无法将
    INT
    DATETIME
    进行比较(这就是
    NOW()
    返回的内容)

    如果您的
    过期
    实际上是一个时间戳,您可以:


    • 使用
      FROM_UNIXTIME()
      将时间戳转换为
      日期时间,其中FROM_UNIXTIME(expires)以上查询不会从数据库中删除任何内容。查看数据库日志以查看实际的delete子句,该子句正在被调用OOPS我复制了错误的一个,正确的一个。
      expires
      的数据类型是什么?您可以定义您的expires吗?或者,如果您添加一个示例,说明哪些记录应该被删除,哪些不应该是unix时间戳,上面的查询始终不会从数据库中删除任何内容。查看数据库日志以查看实际的delete子句,该子句正在被调用OOPS我复制了错误的一个,正确的一个。
      expires
      的数据类型是什么?您可以定义您的expires吗?或者,如果您添加一个示例,说明哪些记录应该被删除,哪些不应该是unix时间戳,一直都是海报上写的专栏是INTas类型的海报上写的专栏是INTES类型的没错,我甚至没有意识到NOW()是一个正确的时间格式,以为它是一个时间戳,这就是我的问题。是的,没错,我甚至没有意识到NOW()是一个正确的时间格式,以为它是一个时间戳,这就是我的问题。