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

如何在SQL Server Management Studio中拆分日期时间列为日期和时间列?

在SQL Server中拆分合并的日期时间列

情况1:原列是datetime/datetime2类型(推荐方式)

如果你的「Date-Time」列是SQL Server标准的日期时间类型(datetime或datetime2),直接通过类型转换提取日期和时间是最可靠的,无需字符串拆分:

  1. 先新增用于存储日期和时间的列(避免用Date/Time这类关键字作为列名):
ALTER TABLE 你的表名
ADD RecordDate DATE,
    RecordTime TIME;
  1. 填充新增列的数据:
UPDATE 你的表名
SET RecordDate = CAST([Date-Time] AS DATE),
    RecordTime = CAST([Date-Time] AS TIME);

注:因为列名包含特殊字符「-」,所以需要用方括号[]包裹列名。

情况2:原列是字符串类型(VARCHAR/CHAR)

如果「Date-Time」列是字符串格式,可通过字符串函数拆分后转换类型:

  1. 新增列:
ALTER TABLE 你的表名
ADD RecordDate DATE,
    RecordTime TIME;
  1. 拆分并填充数据:
UPDATE 你的表名
SET RecordDate = CAST(LEFT([Date-Time], CHARINDEX(' ', [Date-Time]) - 1) AS DATE),
    RecordTime = CAST(SUBSTRING([Date-Time], CHARINDEX(' ', [Date-Time]) + 1, LEN([Date-Time])) AS TIME);

可选:自动同步的计算列

如果希望新增列自动跟随原列的变化更新,可创建持久化计算列,无需手动执行UPDATE:

ALTER TABLE 你的表名
ADD RecordDate AS CAST([Date-Time] AS DATE) PERSISTED,
    RecordTime AS CAST([Date-Time] AS TIME) PERSISTED;

PERSISTED关键字会将计算结果存储在表中,避免每次查询都重新计算,提升性能。

内容的提问来源于stack exchange,提问作者Ertuğrul Pakdamar

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.01 03:10:57