我想将两个单独的列组合到日期时间中,并在SQL Server中减去20小时。将SQL Server varchar转换为用于算术的datetime
此作品在甲骨文:
create table t (x varchar2(8),y varchar2(6));
insert into t values ('20151106','090000');
select to_char(to_date(x||' '||y, 'yyyymmdd hh24miss')
- (20/24),'dd-mm-yyyy hh24:mi:ss') as "date minus 20 hrs" from t;
date minus 20 hrs
- -----------------
05-11-2015 13:00:00
我不能在SQL Server破解它,我可以得到部分的工作,但不能合并这两个日期(太多的功能)。
这工作:
CREATE TABLE t (x VARCHAR(8), y VARCHAR(6))
INSERT INTO t
VALUES('20151105', '150800')
SELECT
DATEADD(HOUR, -20, CAST(CONCAT(SUBSTRING(y, 1, 2), ':', SUBSTRING(y, 3, 2), ':', SUBSTRING(y, 5, 2)) AS TIME))
FROM t
这工作:
SELECT DATEADD(HOUR, -20, x)
FROM t
但我不能将它们合并:
SELECT
DATEADD(HOUR, -20,
CONCAT(SUBSTRING(x, 1, 4), '-', SUBSTRING(x, 5, 2), '-',
SUBSTRING(x, 7, 2), ' ',
CAST(CONCAT(SUBSTRING(y, 1, 2), ':', SUBSTRING(y, 3, 2),
':', SUBSTRING(y, 5, 2)) AS TIME)))
FROM t
完美,谢谢你,非常感谢。 –