将仅以小时作为时区的日期时间偏移量列上载到 SQL Server



我的数据库中有一个timestamp列,其值如下:

2017-01-01 00:00:58.538-05
2017-01-01 00:16:58.54-05

数据类型varchar,因为datetimedatetime2格式不起作用。我现在需要将此列转换为日期时间格式。我刚刚发现了datetimeoffset.:(

但是,转换仍然无法按原样工作,并且出现错误。 日期时间偏移量希望至少看到-05:0不仅-05

DECLARE @datevar datetimeoffset = '2017-01-01 00:00:58.538-05';  
SELECT @datevar

消息 241,级别 16,状态 1,第 3
行 从字符串转换日期和/或时间时转换失败。

如何解决这个问题?最坏的情况是,我倾向于使用python预处理每个文件以在每个值的末尾添加:0,然后保存文件,然后在最后批量上传文件夹中的每个文件。但是,每个文件有 ~3000 万行,每年有 365 行。所以我真的不想那样做。

同样,数据已经上传,一种简单快捷的方法将不胜感激。现在表中大约有 80 亿行,所以我不知道这是否可以使用 SQL Server Management Studio 来完成。

您可以在 sql 本身中执行追加:00

SELECT Cast(dates + ':00' AS DATETIMEOFFSET),
dates
FROM   (VALUES ('2017-01-01 00:00:58.538-05'),
('2017-01-01 00:16:58.54-05')) tc (dates) 

考虑到您的日期都没有时区的分钟部分。如果某些日期有分钟部分,则需要以不同的方式处理

在您的表中,它应该是这样的

SELECT Cast(datecolumn + ':00' AS DATETIMEOFFSET),
datecolumn 
FROM   Yourtable

更新表

update t set yourcol = Cast(yourcol + ':00' AS DATETIMEOFFSET)
FROM   Yourtable

然后将表数据类型更改为datetimeoffset并确保上传带有偏移时间部分的数据

最新更新