在数据类型中将Varchar转换为Date

时间:2014-01-02 08:39:52

标签: sql sql-server sql-server-2008 select type-conversion

我对SQL Server比较陌生,所以我想知道如何将数据类型从varchar转换为date格式?我有几千条记录,因此我需要一个查询来帮助您在单个查询中将varchar转换为date

我在yyyymmdd中使用此格式的日期:varchar(8),我希望将其转换为yyyymmdd,格式为date

有任何疑问可以帮助我吗?

6 个答案:

答案 0 :(得分:1)

只需使用此内置CONVERT功能,然后选中此Link以格式化日期

-- Use 101 if you have divider in your date
SELECT convert(datetime, '2014-01-02',101) as [DateTime]

-- Use 112 if you don't have divider in your date
SELECT convert(datetime, '20140131',112) as [DateTime]  

<强>编辑:

UPDATE yourTable SET field = convert(datetime, 'yourFieldName',112)
--This will update all of your field regardless of any particular row
--If you want to update any particular set of rows use `WHERE` clause

如果你有更多不同的格式转到给定的链接。

答案 1 :(得分:1)

对于VARCHAR和DATETIME之间的各种转换,请查看this link

实际上在您的情况下,由于您的VARCHAR采用yyyymmdd格式,您可以:

convert(datetime, YourVarcharDateField, 112)

答案 2 :(得分:0)

ALTER TABLE [dbo].[table] ADD ConvertedDate Date
UPDATE [dbo].[SysData] SET ConvertedDate = CAST(VarCharDate as Date)
ALTER TABLE [dbo].[table] DROP COLUMN VarCharDate

答案 3 :(得分:0)

可以隐式或显式转换数据类型。 隐式转化对用户不可见。 SQL Server自动将数据从一种数据类型转换为另一种数据类型。例如,当smallint与int进行比较时,smallint会在比较进行之前隐式转换为int。

显式转换使用CAST或CONVERT函数。

CAST和CONVERT函数将值(局部变量,列或其他表达式)从一种数据类型转换为另一种数据类型

convert(datetime, '2013-05-04',101)

CAST ( expression AS data_type )

答案 4 :(得分:0)

使用CAST OR CONVERT函数将字符串转换为日期

试试这个:

SELECT CAST('20140102' AS DATE) AS convertedDate;
SELECT CAST(colName AS DATE) AS convertedDate FROM tableA;  -- Replace column name and table name

SELECT CONVERT(DATE, '20140102', 112) AS convertedDate;
SELECT CONVERT(DATE, colName, 112) AS convertedDate FROM tableA;  -- Replace column name and table name
两个查询的

OUTPUT

|convertedDate|
|-------------|
|2014-01-02   |

答案 5 :(得分:0)

在SQL SERVER中,有两种类型的内置转换技术。

  1. 转换
  2. 角色
  3. 转换具有自己的默认值,因此它将在SQL SERVER的升级版本中过时 更好地利用CAST转换技术

    在你的场景中。已经有数据类型为Varchar(8)的日期试图转换为日期

    系统地解决。

    在现有表格中添加一个新列。

    Alter Table Table_name Add changedDataTypeDate Date
    

    将varchar数据类型中的值更新为Date Datatype

    UpDate Table_name Set ChangedDataTypeDate = CAST(OriginalDataTypeDate as Date)
    

    再次将新列名称更改为旧列名称。

      

    Sp_Rename'Tablename.changedDataTypeDate','OriginalDataTypeDate','COLUMN'

    完成了。

    根据您的要求。

    Alter Table customer Add Purchase_Changedtype Date
    Update Customer set Purchase_changedtype = CAST(Purchase_date as Date) 
    

    (如果你需要Time也取代Datetime而不是Date)

    Alter table Customer Drop column Purchase_date
    Sp_Rename 'Customer.Purchase_ChangedType','Purchase_Date','Column'