Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/.htaccess/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql server 正在将时区仅为小时的datetimeoffset列上载到SQL Server_Sql Server_Sql Server 2014_Datetimeoffset - Fatal编程技术网

Sql server 正在将时区仅为小时的datetimeoffset列上载到SQL Server

Sql server 正在将时区仅为小时的datetimeoffset列上载到SQL Server,sql-server,sql-server-2014,datetimeoffset,Sql Server,Sql Server 2014,Datetimeoffset,我的数据库中有一个timestamp列,其值如下所示: 2017-01-01 00:00:58.538-05 2017-01-01 00:16:58.54-05 数据类型为varchar,因为datetime,datetime2格式不起作用。我现在需要将此列转换为datetime格式。我刚刚发现了关于datetimeoffset:( 但是,转换仍然不能正常工作,我得到一个错误。datetimeoffset希望看到至少-05:0,而不仅仅是-05 DECLARE @datevar datetim

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

2017-01-01 00:00:58.538-05
2017-01-01 00:16:58.54-05
数据类型为
varchar
,因为
datetime
datetime2
格式不起作用。我现在需要将此列转换为datetime格式。我刚刚发现了关于
datetimeoffset
:(

但是,转换仍然不能正常工作,我得到一个错误。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
,并确保上载数据时偏移量中包含时间部分

是否可以添加一个答案,以便我可以使用列而不是单个值?谢谢您的帮助。是的,这可以解决问题。但是如何将其保存回表?我需要两个选项:1-添加datetimeoffset将值放入一个新列中,2-覆盖当前列。谢谢。我自己在挖掘了一个小时后也找到了它。下面是我所做的:更改表\u name add timestamp 2 datetimeoffset;go;更新表\u name set timestamp 2=(cast(timestamp+“:00”as datetimeoffset));