我正在使用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)更改为日期。
USE [reporting_database]
GO
INSERT INTO [dbo].[Converted_Dates]
SELECT
cast(Dates as date)
FROM [dbo].[Dates]
GO
有关如何以旧格式将数据从旧表转换为新表的任何建议吗?
答案 0 :(得分:2)
date
和datetime
数据类型的值不以sql server格式存储。如果您希望以不同的格式查看日期,则可以在转换为varchar
(或nvarchar
,nchar
,{{1时操纵日期和日期时间数据类型的显示方式使用一些内置函数的数据类型。
您应该将日期存储为char
数据类型,如果您可以在应用程序级别格式化它们,请在那里进行格式化。如果必须在sql中格式化它们,请使用convert()
styles。
date
返回:select convert(char(10),getdate(),120)
<小时/> 在sql server 2012+中,您可以使用
format()
2017-05-01
返回:select format(getdate(),'yyyy-MM-dd')
但是2017-05-01
要慢得多,请看一下:format()
is nice and all, but… - Aaron Bertrand