Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/21.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 我希望在sql中将列[varchar]的数据类型更改为[datetime],而不会丢失数据_Sql Server_Datetime_Type Conversion - Fatal编程技术网

Sql server 我希望在sql中将列[varchar]的数据类型更改为[datetime],而不会丢失数据

Sql server 我希望在sql中将列[varchar]的数据类型更改为[datetime],而不会丢失数据,sql-server,datetime,type-conversion,Sql Server,Datetime,Type Conversion,我已尝试保存更改,但出现以下错误: 不允许保存更改您所做的更改需要 将删除并重新创建以下表。你要么 例如, PersonID In\u time Out\u time 1500110:00上午7:20下午 1500210:10上午7:10下午 1500310:15上午7:00下午 “输入时间”和“输出时间”字段位于varchar(50)中 我想将列的数据类型从varchar更改为datetime 我只是尝试在GUI中而不是在查询中。因为我是..,如果我编写了任何错误的脚本,它就会丢失数据,所以我

我已尝试保存更改,但出现以下错误:

不允许保存更改您所做的更改需要 将删除并重新创建以下表。你要么

例如,
PersonID In\u time Out\u time
1500110:00上午7:20下午
1500210:10上午7:10下午
1500310:15上午7:00下午

“输入时间”和“输出时间”字段位于varchar(50)中

我想将列的数据类型从
varchar
更改为
datetime

我只是尝试在GUI中而不是在查询中。因为我是..,如果我编写了任何错误的脚本,它就会丢失数据,所以我知道该怎么做 我是sql新手。因此,请建议我做什么。

创建临时表以从表中复制值,然后将值从表复制到临时表。之后,您可以使用日期截断表或列,之后,您可以将nvarchar列的数据类型更改为datetime,之后,将值从临时表复制到普通表,您可以执行以下操作:

-- Creation of sample table
CREATE TABLE ChangeColType
(
    Data NVARCHAR(20)
)

-- Inserting sample data 
INSERT INTO ChangeColType VALUES ('10:00 AM')

-- Creatig temp table
CREATE TABLE #TempValues
(
    Data NVARCHAR(50)
)

-- Copying values from table to temp table
INSERT INTO #TempValues
SELECT Data 
FROM ChangeColType

-- Truncating your table
TRUNCATE TABLE ChangeColType

-- Changing datatype of your column
ALTER TABLE ChangeColType
ALTER COLUMN Data DATETIME

-- Copying back values from temp table to your table
INSERT INTO ChangeColType
SELECT Data 
FROM #TempValues

-- Selecting values from table after datatype changed
SELECT CONVERT(varchar(15),CAST(Data AS TIME),100)   
FROM ChangeColType

-- Dropping temp table
DROP TABLE #TempValues

如果要通过GUI更改表的结构,请检查以下内容:

工具菜单->自定义->转到左侧弹出菜单上的Designers voice,并取消选中“防止保存需要重新创建表的更改”。

提供存储在varchar列中的示例数据。你也在使用MySql还是SQL Server?列名是“In_TIme”值是10:00 PM我在使用SQL Server..好吧。为了帮助您,我们需要查看您的代码和数据库的结构。目前唯一的猜测是,你试图做一些你没有必要权利做的事情。也许这能帮你查一查。我试着贴图片,但上面写着“你的声誉分数很低…”我该怎么办。。?是的,我是新手。发布代码,而不是作为图像。它说-警告:从“varchar(50)”转换列“intime”时可能会丢失数据。-警告:从“varchar(50)”转换列“outtime”时可能会丢失数据。