问题描述
我是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
对象(在python中),并且我无法比较这两个值。
我将如何让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
来代替, SELECT time FROM check_times WHERE fullname=%s
得到一个元组,其元数据的datetime.datetime
对象存储在数据库中。
我不确定我可以用谷歌搜索什么术语,因为我尝试的一切都不会返回有用的信息。
谢谢
1楼
我发现我要去哪里错了。
在开发代码以更新行时,我无意间使它插入了2018
的Unix时间戳。
问题中的代码正常运行,并且正在返回该值-我被抛弃了,因为我期望返回更大的数字。
我清除表并再次运行插入代码后才发现。
我猜想深夜编程的危险。