You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何将整数分钟数添加到日期时间组成的Timestamp字段中?

解决Testing表新增timestamp列并计算结束时间的问题

别发愁,这个需求其实很好实现!我来一步步帮你搞定:

1. 填充begintime字段

你提到用timestamp_from_parts()来生成begintime,这个函数在SQL Server里需要传入年、月、日、时、分、秒、毫秒这些参数,我们可以从现有的testdate和testtime字段里提取对应值:

UPDATE Testing
SET begintime = timestamp_from_parts(
    YEAR(testdate), MONTH(testdate), DAY(testdate),
    DATEPART(HOUR, testtime), DATEPART(MINUTE, testtime),
    DATEPART(SECOND, testtime), 0 -- 毫秒部分如果不需要可以设为0
);

或者更简便的方式,直接把testdate和testtime拼接成datetime后转成timestamp,效果完全一致:

UPDATE Testing
SET begintime = CAST(CAST(testdate AS DATETIME) + CAST(testtime AS DATETIME) AS TIMESTAMP);

2. 计算并填充endtime字段

要得到结束时间,只需要用DATEADD()函数把testminutes分钟加到begintime上就行,这个函数支持直接对timestamp类型进行操作:

UPDATE Testing
SET endtime = DATEADD(MINUTE, testminutes, begintime);

如果testminutes可能存在NULL值,建议加上ISNULL()处理,避免endtime变成NULL:

UPDATE Testing
SET endtime = DATEADD(MINUTE, ISNULL(testminutes, 0), begintime);

3. 合并成单条更新语句(可选)

如果你想一次性完成两个字段的填充,可以把两个操作合并到一个UPDATE语句里,这样效率更高:

UPDATE Testing
SET begintime = CAST(CAST(testdate AS DATETIME) + CAST(testtime AS DATETIME) AS TIMESTAMP),
    endtime = DATEADD(
        MINUTE, 
        ISNULL(testminutes, 0),
        CAST(CAST(testdate AS DATETIME) + CAST(testtime AS DATETIME) AS TIMESTAMP)
    );

这样就能完美实现你想要的效果啦!

内容的提问来源于stack exchange,提问作者Holt

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.29 08:22:33