如何将Python datetime对象的微秒转换为毫秒并存入Oracle数据库
将Python datetime微秒转换为毫秒后存入Oracle数据库(cx_Oracle)
实现方法
以下是几种可靠的转换方式,确保存入Oracle的时间只保留毫秒精度:
方法1:手动截断微秒到毫秒
直接对datetime对象的microsecond字段进行取整处理,保留到毫秒级别:
import datetime import cx_Oracle # 获取当前时间,截断微秒至毫秒 current_dt = datetime.datetime.now() ms_precise_dt = current_dt.replace(microsecond=(current_dt.microsecond // 1000) * 1000) # 数据库插入操作示例 conn = cx_Oracle.connect("user/pwd@db_host:1521/service_name") cursor = conn.cursor() cursor.execute("INSERT INTO your_table (ins_timestamp) VALUES (:ts)", [ms_precise_dt]) conn.commit() cursor.close() conn.close()
方法2:用timedelta剔除多余微秒
通过计算微秒部分的余数,用timedelta减去这部分,得到毫秒级时间:
current_dt = datetime.datetime.now() # 计算需要移除的微秒数(超过毫秒的部分) excess_micros = datetime.timedelta(microseconds=current_dt.microsecond % 1000) ms_precise_dt = current_dt - excess_micros
注意事项
- 确保Oracle表中的
ins_timestamp字段类型为TIMESTAMP(而非DATE),因为DATE类型仅支持到秒精度,会自动截断毫秒部分。 - cx_Oracle会自动完成Python datetime对象与Oracle TIMESTAMP类型的映射,无需额外格式转换。
内容的提问来源于stack exchange,提问作者Rahul
相关产品推荐
相关产品推荐

