我在Stackoverflow中已经阅读了类似的文章,但我似乎无法在我的案例中使用它。
我的列名为(Date),数据类型为varchar,整个列中的数据如下所示(1999-12-31-23-00-01),没有括号。
因此,我想要相同的值,而不是Varchar,但是采用日期时间格式。
这是我的表结构:
CREATE TABLE App (
[ID] [int] IDENTITY(1,1)NOT NULL,
[Date] Varchar(50)NULL,
[Inst.nr] [smallint] NULL,
[Creator Initials] varchar NULL,
[AppOwner] varchar NULL,
[Status] varchar NULL,
[Serial.Nr] varchar NULL,
[MAC.Addr] varchar NULL,
[Dell.nr] varchar NULL,
[Model] varchar NULL,
[描述] varchar NULL,
[服务保修] [日期] NULL,
[已购买] [日期] NULL, )
实际上,问题不在于结构,它来自Excel文件的一些旧数据,它被导入到SQL数据库中。 在我的[Date]列中,现在在Varchar中,此列中的数据如下所示1999-12-31-23-00-01
如您所见,它看起来像日期时间格式,但它不接受从varchar到datetime的转换
答案 0 :(得分: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)
答案 1 :(得分:0)
在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)
希望这有帮助!