我的任务应该很简单,只需将日期转换为特定格式
2015-11-16T20:34:19+08:00
(yyyy-mm-ddThh:mm:ss+[timezone offset]
)我稍后将其导出到需要此类型格式的Excel模板。
查看存储所有数据的数据库表,我注意到存储日期的列是Varchar(20)
数据类型。据我所知,保存这样的日期是件坏事。
基本上我需要的是转换以下内容:
SELECT TIMESTAMP AS LASTCHANGEDATE FROM TABLE1
格式为yyyy-mm-ddThh:mm:ss+[timezone offset]
,但TIMESTAMP的数据类型为varchar(20)
任何人都可以帮忙解决这个问题吗?
修改
日期存储在这里 23.12.2015 17:08:18
答案 0 :(得分:2)
在SQL Server中,它是这样的:
编辑:尝试这样:DECLARE @dtString VARCHAR(100) = '23.12.2015 17:08:18';
DECLARE @dt DATETIME = CONVERT(DATETIME, @dtString, 104);
SELECT CONVERT(VARCHAR(100),@dt,126)+'+08:00';
我尝试直播的原因是你的"日期存储 atm 就像这样"。我想,如果以不同的格式出现,最好不要指定它......
旧代码:
DECLARE @dtString VARCHAR(100) = '23.12.2015 17:08:18';
DECLARE @dt DATETIME = CAST(@dtString AS DATETIME);
SELECT CONVERT(VARCHAR(100),@dt,126)+'+08:00';
编辑:CONVERT的第三个参数是126.这将创建一个ISO8601兼容的日期等价
结果:
2015-12-23T17:08:18+08:00
编辑:根据您的评论,您可以像这里一样实施。
DECLARE @tbl TABLE(TimeStamp VARCHAR(100),item INT);
INSERT INTO @tbl VALUES
('23.12.2015 17:08:18',1123)
,('23.12.2015 19:08:18',1123)
,('24.12.2015 17:08:18',1123)
,('22.12.2015 19:08:18',3233)
SELECT item, CONVERT(VARCHAR(100),CONVERT(DATETIME,TimeStamp,104),126)+'08:00' AS ConvertedDate
FROM @tbl
WHERE item IN (1123,3233,2342);