SQL 服务器日期时间到日期时间字符串列
SQL Server Datetime to Datetime String Column
我想将所有 datetime
列更新为新的字符串列,该列仅提取 date
部分(指的是 datetime
列类型)。我做了一些研究,datestr 的格式应该是:
CONVERT(VARCHAR(10), @dt, 105) s2;
我的查询似乎不起作用:
UPDATE [dbo].[myTable]
SET [dbo].[myTable].datestr = (
SELECT [dbo].[myTable].dt
FROM [dbo].[myTable]
WHERE [dbo].[myTable].ID = [dbo].[myTable].ID
)
您很可能会收到类似于“子查询返回多于一行”的错误。更新查询不需要子查询。应该是这样的:
UPDATE [dbo].[myTable]
SET datestr = CONVERT(VARCHAR(10), dt, 105);
也就是说,完全没有必要在 table 中存储相同的信息两次。如果您想要特定格式的日期时间,请按需格式化:
SELECT CONVERT(VARCHAR(10), dt, 105) AS datestr
FROM [dbo].[myTable]
我想将所有 datetime
列更新为新的字符串列,该列仅提取 date
部分(指的是 datetime
列类型)。我做了一些研究,datestr 的格式应该是:
CONVERT(VARCHAR(10), @dt, 105) s2;
我的查询似乎不起作用:
UPDATE [dbo].[myTable]
SET [dbo].[myTable].datestr = (
SELECT [dbo].[myTable].dt
FROM [dbo].[myTable]
WHERE [dbo].[myTable].ID = [dbo].[myTable].ID
)
您很可能会收到类似于“子查询返回多于一行”的错误。更新查询不需要子查询。应该是这样的:
UPDATE [dbo].[myTable]
SET datestr = CONVERT(VARCHAR(10), dt, 105);
也就是说,完全没有必要在 table 中存储相同的信息两次。如果您想要特定格式的日期时间,请按需格式化:
SELECT CONVERT(VARCHAR(10), dt, 105) AS datestr
FROM [dbo].[myTable]