从SQL Server 2005中的DateTime减去分钟

pri*_*ore 34 t-sql sql-server datetime sql-server-2005 dateadd

假设我有一个datetime字段,其值为2000-01-01 08:30:00 ,持续时间字段的值为00:15(表示15分钟)

如果我减去这两个,我应该得到2000-01-01 08:15:00

此外,如果我想减去1:15(意味着1小时15分钟),输出应该是2000-01-01 07:15:00

我在尝试 SELECT DATEDIFF(minute, '00:15','2000-01-01 08:30:00');

但输出是52595055.我怎样才能得到理想的结果?

NB~如果我这样做SELECT dateadd(minute, -15,'2000-01-01 08:30:00');,我将获得所需的结果,但这涉及解析分钟字段.

编辑:

根据答案,每个人都建议将所有内容转换为分钟然后减去 - 所以如果是1:30,我需要减去90分钟.没关系.没有转换成分钟的任何其他方式?

Mar*_*oth 58

SELECT DATEADD(minute, -15, '2000-01-01 08:30:00'); 
Run Code Online (Sandbox Code Playgroud)

第二个值(在这种情况下为-15)必须是数字(即不是像'00:15'那样的字符串).如果您需要减去小时和分钟,我建议将字符串拆分为:获取小时和分钟,并使用类似的方法减去

SELECT DATEADD(minute, -60 * @h - @m, '2000-01-01 08:30:00'); 
Run Code Online (Sandbox Code Playgroud)

其中@h是字符串的小时部分,@ m是字符串的分钟部分

编辑:

这是一个更好的方法:

SELECT CAST('2000-01-01 08:30:00' as datetime) - CAST('00:15' AS datetime)
Run Code Online (Sandbox Code Playgroud)


Mit*_*eat 6

您想要使用DATEADD,使用负持续时间。例如

DATEADD(minute, -15, '2000-01-01 08:30:00') 
Run Code Online (Sandbox Code Playgroud)