【问题标题】:Choosing SQL Data Type for DateTime-data (compatible w. MySQL & MSSQL)为 DateTime-data 选择 SQL 数据类型(兼容 MySQL 和 MSSQL)
【发布时间】:2021-05-23 04:31:40
【问题描述】:

我需要将DateTime 数据保存在数据库中,并且需要建议以选择正确的 SQL 数据类型。

我想保存Start-DateTimeEnd-DateTime
随后我想直接在表格中输出Start-DateTime,并且我想输出开始和结束之间的持续时间。为了更好地想象,结果应该是这样的:

  • 保存Y-m-d H:i:s 太少了。我还想要毫秒(小数点后 1 位)。
  • 我的 PHP 应用程序支持 MySQLMicrosoft SQL-Server 作为目标数据库。数据类型应该很容易兼容两者。

我应该为Start-DateTimeEnd-DateTime 列选择哪种SQL 数据类型?

非常感谢!

【问题讨论】:

  • 不要期望 SQL 可以在 RDBMS 之间传输,如果您使用 2 个不同的,您将需要不同的代码。至于将日期和时间数据存储在什么地方,以及日期和时间数据类型 e。查看您实际使用的 RDBMS 的文档,它会告诉您您的选择。
  • 节省 Y-m-d H:i:s 太少了。我还想要毫秒(1 个小数位)。 DATETIME(1) 用于 MySQL,DATETIME2(1) 用于 SQL Server。 数据类型应该很容易兼容两者。没有这样的数据类型。唯一的可能是将时间戳归一化为 ms 并存储在 BIGINT 数据类型中,但它需要再次针对每个 DBMS 进行特定转换。
  • 小数点后一位不是毫秒。虽然很少听到这个词,但它是分秒
  • @Akina 在 MySQL 中使用 DATETIME(3) 和在 MsSQL 中使用 DATETIME2(3) 工作正常。谢谢!

标签: mysql sql-server


【解决方案1】:

您可以将 datetime2(7) 用于 MsSQL。我总是将 datetime2(7) 与 php、c# 等一起使用。导致正确计算日期毫秒之间的差异。它看起来像“2021-02-20 15:35:43.5866667”。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-08-01
    • 1970-01-01
    • 2011-10-26
    • 2017-03-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多