sql - 使用 SQL-Server 中的格式将 nvarchar 转换为日期

标签 sql casting sql-server-2012

我正在使用 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

关于如何将旧表中的数据以首选格式转换为新表,有什么建议吗?

最佳答案

datedatetime 数据类型的值未按格式存储在 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/

相关文章:

php 准备好的语句 ||语法错误或访问冲突 : 1064

mysql - 使用选择查询将值传递给插入查询

c++ - 在 C++ 中 0x88 文字会转换成什么?

java - 在泛型类中将字符串转换为数字

sql - UPDATE FROM 不适用于同一行的多次更新

sql - 如何在SQL中设置bool值

casting - Sqlalchemy 查询返回 Decimal 对象

sql-server-2012 - 在 SQL Server 中用基于集合的方法替换 while 循环

sql-server - 是否可以忽略 SQL 表别名?

sql-server - 外部应用在不匹配时意外返回 NOT NULL 列