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)
您想要使用DATEADD,使用负持续时间。例如
DATEADD(minute, -15, '2000-01-01 08:30:00')
Run Code Online (Sandbox Code Playgroud)