我正在使用 SQL Server Management Studio。我的数据库中有一张表,其中包含存储为 nvarchar(255) 的日期。我想将此表的数据迁移到一个新表,我将其称为 Converted_Dates 并将此数据存储为日期。另外,我希望它们全部采用这样的格式 YYYY-MM-DD
当前日期表如下所示:
**Dates**
15/6/2011
16/6/2011
2013-03-30
2013-04-16
...
我希望新表看起来像这样:
**Converted_Dates**
2011-06-15
2011-06-16
2013-03-30
2013-04-16
...
我执行此查询,但日期格式保持不变,只是数据类型从 nvarchar(255) 更改为 date。
USE [reporting_database]
GO
INSERT INTO [dbo].[Converted_Dates]
SELECT
cast(Dates as date)
FROM [dbo].[Dates]
GO
关于如何将旧表中的数据以首选格式转换为新表,有什么建议吗?
最佳答案
date
和 datetime
数据类型的值未按格式存储在 SQL Server 中。如果您想以不同的格式查看日期,您可以操纵日期和日期时间数据类型在转换为 varchar
(或 nvarchar
、 nchar
,char
) 数据类型使用一些内置函数。
您应该将日期存储为date
数据类型,如果您可以在应用程序级别格式化它们,请在应用程序级别执行此操作。如果必须在 sql 中格式化它们,则使用 convert()
styles .
select convert(char(10),getdate(),120)
返回:2017-05-01
在 sql server 2012+ 中,您可以使用
format()
select format(getdate(),'yyyy-MM-dd')
返回:2017-05-01
但是 format()
慢得多,请看这里:format()
is nice and all, but… - Aaron Bertrand
关于sql - 使用 SQL-Server 中的格式将 nvarchar 转换为日期,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43722134/