将仅以小时作为时区的 datetimeoffset 列上传到 SQL 服务器
Uploading datetimeoffset column with only hour as timezone to SQL Server
我的数据库中有一个 timestamp
列,其值如下所示:
2017-01-01 00:00:58.538-05
2017-01-01 00:16:58.54-05
数据类型为 varchar
,因为 datetime
、datetime2
格式无效。我现在需要将此列转换为日期时间格式。我刚刚发现了 datetimeoffset
。 :(
但是,转换仍然无法正常工作,并且出现错误。 datetimeoffset 想要至少看到 -05:0
而不仅仅是 -05
.
DECLARE @datevar datetimeoffset = '2017-01-01 00:00:58.538-05';
SELECT @datevar
Msg 241, Level 16, State 1, Line 3
Conversion failed when converting date and/or time from character string.
有什么办法可以解决这个问题?最坏的情况我倾向于使用 python
预处理每个文件以在每个值的末尾添加 :0
,然后保存文件,然后批量上传最后文件夹中的每个文件。但是,每个文件大约有 3000 万行,每年有 365 行。所以我真的不想那样做。
同样,数据已经上传,我们将不胜感激。 table 现在大约有 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)
考虑到 none 你的日期有分钟部分时区。如果某些日期有分钟部分,则需要以不同方式处理
在你的 table 中应该是
SELECT Cast(datecolumn + ':00' AS DATETIMEOFFSET),
datecolumn
FROM Yourtable
更新 table
update t set yourcol = Cast(yourcol + ':00' AS DATETIMEOFFSET)
FROM Yourtable
然后将 table 数据类型更改为 datetimeoffset
并确保上传数据的时间部分在偏移量
我的数据库中有一个 timestamp
列,其值如下所示:
2017-01-01 00:00:58.538-05
2017-01-01 00:16:58.54-05
数据类型为 varchar
,因为 datetime
、datetime2
格式无效。我现在需要将此列转换为日期时间格式。我刚刚发现了 datetimeoffset
。 :(
但是,转换仍然无法正常工作,并且出现错误。 datetimeoffset 想要至少看到 -05:0
而不仅仅是 -05
.
DECLARE @datevar datetimeoffset = '2017-01-01 00:00:58.538-05';
SELECT @datevar
Msg 241, Level 16, State 1, Line 3
Conversion failed when converting date and/or time from character string.
有什么办法可以解决这个问题?最坏的情况我倾向于使用 python
预处理每个文件以在每个值的末尾添加 :0
,然后保存文件,然后批量上传最后文件夹中的每个文件。但是,每个文件大约有 3000 万行,每年有 365 行。所以我真的不想那样做。
同样,数据已经上传,我们将不胜感激。 table 现在大约有 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)
考虑到 none 你的日期有分钟部分时区。如果某些日期有分钟部分,则需要以不同方式处理
在你的 table 中应该是
SELECT Cast(datecolumn + ':00' AS DATETIMEOFFSET),
datecolumn
FROM Yourtable
更新 table
update t set yourcol = Cast(yourcol + ':00' AS DATETIMEOFFSET)
FROM Yourtable
然后将 table 数据类型更改为 datetimeoffset
并确保上传数据的时间部分在偏移量