将 nvarchar 列更改为日期时间

waj*_*000 4 sql-server type-conversion sql-server-2014

我是 SQL Server 新手,遇到问题。

我创建了一个数据库来在字段中存储日期nvarchar,但现在我需要将该字段转换为datetime. 我在互联网上搜索,找不到合适的解决方案。

我发现的一件事是创建一个新datetime列,将字符串值复制到该列,然后将新列重命名为原始列。

我的字符串值格式是21/11/2014. 我需要保持相同的格式。如果有人能给我一个可以做到这一点的 SQL Server 查询,我将非常感激。我正在使用 SQL Server Management Studio 2014。

spa*_*dba 5

您可能已经发现,日期应该存储为日期,而不是人类可读的表示形式 (varchar)。

为了从字符串转换为日期,您必须使用您的 SQL Server 版本中提供的转换函数(如果与 Management Studio 相同,则似乎是 2014 年)。在这种情况下,您可以使用 PARSE 函数。

例子:

SELECT PARSE('21/11/2014' AS datetime USING 'it-IT')
Run Code Online (Sandbox Code Playgroud)

您可以在本文中阅读有关日期到字符串和字符串到日期数据类型转换的更多信息:http://www.sqlservercentral.com/articles/T-SQL/88152/

回到您的问题,添加一个新的日期时间列,例如 newCol,更新解析字符串的值,删除旧列并将新列重命名为原始名称:

ALTER TABLE YourTable ADD newCol datetime NULL;
UPDATE YourTable SET newCol = PARSE(oldCol AS datetime USING 'it-IT');
ALTER TABLE YourTable DROP COLUMN oldCol;
EXEC sp_rename 'YourTable.newCol', 'oldCol', 'COLUMN';
Run Code Online (Sandbox Code Playgroud)