【问题标题】:Conversion of datatype Varchar to date in an existing column将数据类型 Varchar 转换为现有列中的日期
【发布时间】:2015-10-11 23:10:47
【问题描述】:

我已在 Stackoverflow 中阅读过类似的文章,但我似乎无法使其适用于我的情况。

我有一个名为 (Date) 的列,数据类型为 varchar,整个列中的数据看起来像这样 (1999-12-31-23-00-01),没有括号。

所以,我想要相同的值,而不是 Varchar,但采用日期时间格式。

这是我的表结构:

创建表格应用 (

[ID] [int] IDENTITY(1,1) 非空,

[日期] Varchar(50) NULL,

[Inst.nr] [smallint] NULL,

[创作者姓名缩写] varchar NULL,

[AppOwner] varchar NULL,

[状态] varchar NULL,

[Serial.Nr] varchar NULL,

[MAC.Addr] varchar NULL,

[Dell.nr] varchar NULL,

[型号] varchar NULL,

[描述] varchar NULL,

[服务保修] [日期] NULL,

[购买] [日期] NULL, )

实际上,问题不在于结构,它是 Excel 文件中的一些旧数据,这些数据已导入 SQL 数据库。 在我现在在 Varchar 中的 [Date] 列中,此列中的数据看起来像这样 1999-12-31-23-00-01

如您所见,它看起来像一个日期时间格式,但它不接受从 varchar 到日期时间的转换

【问题讨论】:

  • “SAME output”的意思是:在查询中?
  • 认为您要求转换为日期时间?
  • smalldatetime 是实现它所需的数据类型。 NOT DATETIME 数据类型。

标签: sql-server visual-studio-2012


【解决方案1】:

不确定您是否要求转换为日期时间

SELECT 
  -- Convert using ISO date time yyyy-MM-dd hh:mm:ss
  CONVERT(datetime, 
          LEFT(Date, 10) + ' ' + 
          REPLACE(RIGHT(Date, 8), '-', ':')
         ) AS DateInDatetime
FROM
  (VALUES 
    -- assume format in yyyy-MM-dd-hh-mm-ss
    ('1999-12-31-23-00-01') 
  ) t (Date)

SQL Fiddle

【讨论】:

  • 您好 Eric,我运行了您的命令,它在随机表中创建了一个新列。如何在我的名为 app 的表中执行它。哦,是的,我希望它转换为日期时间 :) 提前谢谢你
【解决方案2】:

在Sql Server中使用CONVERT函数,转换为日期时间遵循格式类型120

SELECT CONVERT(DATETIME,SUBSTRING('(1999-12-31-23-00-01)',2,10) + ' ' + REPLACE(SUBSTRING('(1999-12-31-23-00-01)',13,8),'-',':'),120)

希望对您有所帮助!

【讨论】:

  • 您好 Giau,您的代码给了我与 Eric 的代码相同的结果。它在随机表中创建一个新列。你能告诉我如何转换我表中的整个列吗提前谢谢你
  • 嗨卡拉什,给我你的表结构
  • 不带括号 '1999-12-31-23-00-01': SELECT CONVERT(DATETIME, SUBSTRING([Date],1,10) + ' ' + REPLACE(SUBSTRING([Date] ,12,8),'-',':'),120) 作为来自 App 的 DateResult
  • 我遇到错误将 varchar 数据类型转换为 datetime 数据类型导致值超出范围。
  • 试试这个:SELECT CONVERT(DATETIME, SUBSTRING([Date],2,10) + ' ' + REPLACE(SUBSTRING([Date],13,8),'-',':' ),120) 作为来自 App 的 DateResult
猜你喜欢
  • 1970-01-01
  • 2012-10-28
  • 1970-01-01
  • 1970-01-01
  • 2021-08-09
  • 1970-01-01
  • 1970-01-01
  • 2013-01-15
  • 1970-01-01
相关资源
最近更新 更多