sql - 如何在 SQL Server 中插入带偏移量的日期时间?
问题描述
我有以下价值
2020-06-16T13:41:36.000Z
如何将值插入表中,我应该使用什么列数据类型?
我已经尝试使用datetime
列的数据类型,但没有成功
解决方案
正确的数据类型是datetimeoffset
-- 虽然datetime
并且datetime2
也可以工作(假设这些值都在同一个时区)。SQL Server 使用内部格式存储日期/时间。
create table t (ts datetimeoffset);
insert into t (ts) values ('2020-06-16T13:41:36.000Z');
select * from t;
这将返回:
ts
2020-06-16 13:41:36.0000000
这等效于您的值,但使用任意格式进行格式化。如果要控制格式,则需要将值转换为字符串。一种方法convert()
与选项 127 一起使用:
select convert(varchar(255), t.ts, 127) from t
format()
提供更大的灵活性。
您还可以将此逻辑添加到表定义中:
alter table t add ts_iso8601 as (convert(varchar(255), t.ts, 127));
这是一个 db<>fiddle。
推荐阅读
- reactjs - 在 React Native 中接收错误消息我无法弄清楚
- javascript - 使用 Package.json 中的脚本顺序运行命令未按预期工作
- angular - 计算传单上 2 点 Routing.control 路线中的标记
- python - Python Visual Studio 代码导入语法问题 // 颜色
- javascript - 使用 Typescript 遍历元组数组
- c# - EF Core 计算的持久列,不能配置为“ValueGeneratedOnUpdate”或“ValueGeneratedOnAddOrUpdate”
- r - 在闪亮的仪表板标题面板中更改字体颜色
- r - ggplot2:stat_density2d 轮廓/箱中点的标识
- azure - 将用户添加到组时,Azure AD 预配会发送 SCIM 替换操作
- linux - 有没有办法在 Linux 上安装 VNC 服务器而不是 root 用户,而是成为普通用户?