将 SQL 个日期转换为不同的格式
Converting SQL dates to different formats
我有一个任务应该很简单,只需将日期转换为特定格式
2015-11-16T20:34:19+08:00
(yyyy-mm-ddThh:mm:ss+[timezone offset]
),我稍后将其导出到需要此类型格式的 Excel 模板。
查看存储所有数据的数据库 table 我注意到存储日期的列是 Varchar(20)
数据类型。据我所知,这样保存日期是一件坏事。
所以基本上我需要的是转换以下内容:
SELECT TIMESTAMP AS LASTCHANGEDATE FROM TABLE1
为 yyyy-mm-ddThh:mm:ss+[timezone offset]
格式,但 TIMESTAMP 的数据类型为 varchar(20)
有人可以帮忙吗?
编辑
日期是这样存储在 atm 23.12.2015 17:08:18
在SQL服务器中是这样的:
编辑:像这样尝试:
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';
我尝试直接投射的原因是你的"The dates are stored atm like this"。我想,如果以不同的格式出现,最好不要指定它...
旧代码:
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);
我有一个任务应该很简单,只需将日期转换为特定格式
2015-11-16T20:34:19+08:00
(yyyy-mm-ddThh:mm:ss+[timezone offset]
),我稍后将其导出到需要此类型格式的 Excel 模板。
查看存储所有数据的数据库 table 我注意到存储日期的列是 Varchar(20)
数据类型。据我所知,这样保存日期是一件坏事。
所以基本上我需要的是转换以下内容:
SELECT TIMESTAMP AS LASTCHANGEDATE FROM TABLE1
为 yyyy-mm-ddThh:mm:ss+[timezone offset]
格式,但 TIMESTAMP 的数据类型为 varchar(20)
有人可以帮忙吗?
编辑
日期是这样存储在 atm 23.12.2015 17:08:18
在SQL服务器中是这样的:
编辑:像这样尝试:
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';
我尝试直接投射的原因是你的"The dates are stored atm like this"。我想,如果以不同的格式出现,最好不要指定它...
旧代码:
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);