一尘不染

如何在SQL数据库中以毫秒精度存储日期时间

sql

浮点值代表毫秒级的日期和时间:

import datetime
float_time = 1485538757.29289
print datetime.datetime.fromtimestamp(float_time)

印刷:

2017-01-27 09:39:17.292890

要将其存储在db中:

from sqlalchemy import Column, DateTime
from sqlalchemy.ext.declarative import declarative_base

Base = declarative_base()

class MyTable(Base):
    __tablename__ = 'mytable'
    time_created = Column(DateTime, nullable=False)

但是,保存的值会四舍五入到2017-01-27 09:39:17(从2017-01-27 09:39:17.292890)。有解决方案吗?


阅读 137

收藏
2021-05-23

共1个答案

一尘不染

这取决于您使用的SQL数据库。它们的精度有所不同:

PostgreSQL默认为1微秒。(有关远期/过去的警告,请参阅文档。)

MySQL
:默认为1秒。版本后可选的毫秒/微秒精度。5.6.4

MariaDB
:默认为1秒。自版本以来,5.3毫秒/微秒的精度可选

Transact-SQL (Microsoft
SQL):舍入为.000,.003或.007秒的增量

SQLite
:日期时间可以任意精度存储为字符串,但是“仅前三位有效”

Oracle
:默认1微秒。可选精度为1纳秒

笔记:

  • 毫秒:0.001秒
  • 微秒:0.000001s
  • 纳秒:0.000000001s
2021-05-23