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

如何将单列日期时间拆分为两列,时间格式设为HH:mm?

可行解决方法

前提确认

先确保新增的两个列类型匹配需求:

  • 日期列(比如命名为date_column)设置为date类型
  • 时间列(比如命名为time_column)设置为time类型(若要存字符串格式的HH:mm,则设为varchar(5))

分场景处理

场景1:原数据有一个包含完整日期时间的字段

如果表中存在同时包含日期和时间的字段(比如original_datetime,类型为datetime或格式合规的字符串),直接从该字段提取对应值存入新列:

-- 更新日期列
UPDATE [dbo].[YearlyView]
SET [date_column] = CONVERT(date, [original_datetime])

-- 更新时间列
UPDATE [dbo].[YearlyView]
SET [time_column] = CONVERT(time, [original_datetime])

如果原字段是字符串(格式为MM-dd-yyyy HH:mm),先转成datetime再提取:

UPDATE [dbo].[YearlyView]
SET [date_column] = CONVERT(date, CONVERT(datetime, [original_string], 101)),
    [time_column] = CONVERT(time, CONVERT(datetime, [original_string], 101))

(注:101是SQL Server中对应MM-dd-yyyy格式的转换代码)

场景2:原time_column存储的是完整日期时间值

如果time_column原本存的是带日期的datetime值,想只保留时间部分,直接转换类型即可(无需FORMAT,避免字符串隐式转换问题):

UPDATE [dbo].[YearlyView]
SET [time_column] = CONVERT(time, [time_column])

若必须存成HH:mm格式的字符串,先确保time_column是varchar类型,再执行:

UPDATE [dbo].[YearlyView]
SET [time_column] = FORMAT(CONVERT(datetime, [time_column]), 'HH:mm')

原语句未生效的可能原因

  • 若time_column是time类型,FORMAT返回的字符串会触发隐式转换,格式不匹配时会导致无变化或报错
  • 若原字段值本身就是纯时间(比如18:56),转datetime/time后再格式化,结果和原值一致,看起来像未生效

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.23 08:12:07