在mysql中转换select的返回值

dfddblmv  于 2021-06-18  发布在  Mysql
关注(0)|答案(1)|浏览(355)

我是mysql的新手,所以我不确定我是不是想错了,但是我有一个类型为的数据库列 DATETIME . 我使用以下语句填充此数据:

INSERT INTO check_times (fullname, time) VALUES (%s, FROM_UNIXTIME(%s)) ON DUPLICATE KEY UPDATE time=FROM_UNIXTIME(%s)
``` `fullname` 是唯一的字符串,我要么添加新行,要么更新时间值(如果它已经存在)。我拥有的时间戳是unix时间戳,但我将它作为 `DATETIME` 这样我在查看数据时可以很容易地看到日期。
我的问题是,在我的应用程序中,我需要将应用程序中的时间戳(unix时间戳)与数据库中的值进行比较。当我在数据库中得到值时,我收到一个 `datetime` 对象,我无法比较这两个值。如何让mysql转换返回的 `datetime` 值返回到unix时间戳,以便轻松转换?
我想可能是这样的:

SELECT UNIX_TIMESTAMP(time) FROM check_times WHERE fullname=%s

基于此页面,但不起作用。使用下面的python代码,我得到一个包含 `(2018, )` ```
cursor = self.connection.cursor()
cursor.execute("SELECT UNIX_TIMESTAMP(time) FROM check_times WHERE fullname=%s", (fullname,))
time = cursor.fetchone()
cursor.close()

如果我运行上面的代码 SELECT time FROM check_times WHERE fullname=%s 相反,我得到了一个元组 datetime.datetime 对象存储在数据库中的日期。
我不知道我可以用谷歌搜索哪些术语,因为我尝试的每件事都不会返回有用的信息。
谢谢

fnx2tebb

fnx2tebb1#

我已经找到了我错的地方。在开发代码来更新一行时,我不小心做了这样的代码,它插入了的unix时间戳 2018 . 问题中的代码运行正常,它返回这个值-我被抛出是因为我期望返回一个更大的数字。我在清除表并再次运行插入代码后发现了这个问题。我猜是深夜编程的危险。

相关问题