我正在尝试使用变量来增加存储的sql过程中使用的时间变量。
我试过了
v_start1 = addtime(v_start1, v_inc);
where:
declare v_start1 Time;
declare v_inc time; or declare v_inc varchar(10);
select start1 from table into v_start1;
select inc from another_table into v_inc;
并且无法增加v_start1
如果我使用v_start1 = addtime(v_start1, '00:15:00')
它可行,但00:15:00
是一个需要更改的固定值
如何使用第二个变量来提供增量v_strar1的值
我如何将varchar转换为时间;值可以采用+00:15
形式作为字符串
答案 0 :(得分:0)
值是来自“another_table”字符串,如“+00:15”还是时间数据类型值?这可能是个问题。
我建议您避免使用字符串,只将其作为时间或日期时间数据类型处理。如果你有一个像“+15:00”的字符串,它可能意味着15分钟,但它看起来像一些人喜欢15小时。也许在您的查询中,表中的值是一个字符串,并没有正确转换。将其作为时间字段放入表中,它应该可以工作。
作为旁注,我喜欢使用完整的DATETIME数据类型而不是像我在需要添加/减去时所做的时间类型。如果您真的只对时间感兴趣,那么只需使用当前的日期 - 月份来计算您的时间。
我对MySql不是100%肯定,但对于SqlServer和Oracle,可能会遇到以下情况:
如果v_start1是23:55:00并且您添加15分钟,它实际上变为第二天的00:00:10。如果您添加1455分钟,则会获得完全相同的时间,但会在2天后完成。所以,只看时间会让你陷入困境。
如果您处理DATETIME类型,那么您可以随时使用DATE_ADD并轻松添加任何秒,分钟等。