我已尝试保存更改,但它会出现此错误:
例如,不允许保存更改您所做的更改需要更改 下表要删除并重新创建。你有......
PersonID In_time Out_time
15001 10:00 AM 7:20 PM
15002 10:10 AM 7:10 PM
15003 10:15 AM 7:00 PM
'in_time'和'out_time'字段位于varchar(50)
中我想将列的数据类型从varchar
更改为datetime
。
我只是在GUI中尝试而不是在查询中。因为我是..,如果我编写任何错误的脚本,它会丢失数据,所以我知道这样做 我是sql的新手。所以请建议我做什么..
答案 0 :(得分:0)
在将值从表复制到临时表之后,创建 TEMP 表以复制表中的值。在它之后,您可以使用日期截断您的表或列,之后您可以将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
答案 1 :(得分:0)
如果您要通过GUI更改表格的结构,请检查:
工具菜单 - >自定义 - >转到使用弹出窗口打开的左侧菜单上的Designers语音,然后取消选中“禁止保存需要重新创建表的更改”。