【发布时间】:2022-02-01 00:14:06
【问题描述】:
对于 MySQL,要指定数据类型日期时间,则必须使用关键字DATETIME。但它只会给你正常的时间。不是毫秒。
mysql> SELECT col,
> CAST(col AT TIME ZONE INTERVAL '+00:00' AS DATETIME) AS ut
> FROM ts ORDER BY id;
+---------------------+---------------------+
| col | ut |
+---------------------+---------------------+
| 2020-01-01 10:10:10 | 2020-01-01 15:10:10 |
| 2019-12-31 23:40:10 | 2020-01-01 04:40:10 |
| 2020-01-01 13:10:10 | 2020-01-01 18:10:10 |
| 2020-01-01 10:10:10 | 2020-01-01 15:10:10 |
| 2020-01-01 04:40:10 | 2020-01-01 09:40:10 |
| 2020-01-01 18:10:10 | 2020-01-01 23:10:10 |
+---------------------+---------------------+
要以毫秒为单位,必须使用DATETIME(3),而对于微秒,必须使用DATETIME(6)。
但对于 Microsoft SQL Server,DATETIME 将默认为您提供hh:mm:ss:mmm。
https://www.mssqltips.com/sqlservertip/5993/sql-server-date-and-time-functions-with-examples/
问题:
如果我在 Microsoft SQL Server 中使用 DATETIME(3) 会发生什么?
我会收到错误消息,还是会按照默认设置给我时间戳hh:mm:ss:mmm?
我没有 Microsoft SQL Server。只有 MySQL,但我正在尝试使我的 C++ 代码与这两个 SQL 服务器兼容。
【问题讨论】:
-
使用 dbfiddle 检查。或查看official docs。
-
我尝试让 SQL 代码在不同品牌的 SQL 实现之间兼容。尽管 SQL 语言基于一个通用的标准规范,但这通常是不可能的。每个品牌都引入了自己的定制功能。如果您仅将代码限制为不同品牌的相同功能,那么您将无法使用每个品牌提供的任何独特、有价值的功能。
-
如果要指定精度,则需要 SQL Server 中的 DATETIME2
-
@BillKarwin 我明白了!
标签: sql-server datetime