You need to enable JavaScript to run this app. SQL Server表更新:为日志表每行填充正确的日期时间字段值
优惠活动
大模型
产品
解决方案
定价
更多

SQL Server表更新:为日志表每行填充正确的日期时间字段值

SQL Server 2019 日志表日期时间字段填充方案

前提说明

现有数据表结构如下:

CREATE TABLE [dbo].[log_Current](
   [line_number] [int] NULL,
   [Time] [time](7) NULL,
   [server_time_initial] [datetime] NULL,
   [Correct_Date_Time] [datetime] NULL
) ON [PRIMARY]
GO

字段说明

  • server_time_initial:所有行取值相同,代表日志提取时间,固定为2021-05-15 07:05:05
  • line_number:日志条目排序编号
  • Time:日志生成时间,仅包含时分秒,无日期信息
  • Correct_Date_Time:待填充字段,需要写入每行对应的完整日期+时间。日志时间从早间开始递增,跨午夜后日期加1:line_number≤512的记录日期为2021-05-15,513≤line_number≤1889的记录日期为2021-05-16,line_number≥1890的记录日期为2021-05-17,以此类推。

实现方案

方案1:匹配指定分段规则更新

直接按照题目给出的line_number区间判断日期偏移,逻辑简单直观:

UPDATE [dbo].[log_Current]
SET [Correct_Date_Time] = DATEADD(
    DAY,
    CASE
        WHEN line_number <= 512 THEN 0
        WHEN line_number BETWEEN 513 AND 1889 THEN 1
        ELSE 2
    END,
    CAST('2021-05-15' AS DATETIME)
) + CAST([Time] AS DATETIME)

方案2:通用自动偏移计算(支持更多跨天场景)

根据分段规律自动计算天数偏移,无需手动扩展CASE分支即可适配更多后续跨天数据:

UPDATE [dbo].[log_Current]
SET [Correct_Date_Time] = DATEADD(
    DAY,
    CASE WHEN line_number <= 512 THEN 0 ELSE 1 + (line_number - 513) / 1377 END,
    CAST('2021-05-15' AS DATETIME)
) + CAST([Time] AS DATETIME)

结果验证

执行更新后可通过以下语句校验结果是否符合预期:

SELECT line_number, [Time], server_time_initial, Correct_Date_Time
FROM [dbo].[log_Current]
WHERE line_number IN (69,72,512,513,1889,1890)

预期输出:

line_numberTimeserver_time_initialCorrect_Date_Time
6907:05:08.00000002021-05-15 07:05:05.0002021-05-15 07:05:08.000
7207:05:25.00000002021-05-15 07:05:05.0002021-05-15 07:05:25.000
51223:57:07.00000002021-05-15 07:05:05.0002021-05-15 23:57:07.000
51300:00:05.00000002021-05-15 07:05:05.0002021-05-16 00:00:05.000
188923:54:08.00000002021-05-15 07:05:05.0002021-05-16 23:54:08.000
189000:00:16.00000002021-05-15 07:05:05.0002021-05-17 00:00:16.000

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.16 01:27:05