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

SQL Server创建音乐表时mm:ss格式的songDuration字段应选什么数据类型?

SQL Server 歌曲时长字段选型方案

SQL Server 没有原生支持声明后自动以mm:ss格式输出的字段类型,以下两个方案可实现无需每次查询手动格式化的需求,适配ASP.NET Core Web应用场景:

方案一:TIME类型 + 持久化计算列(推荐,适配绝大多数歌曲场景)

适用时长范围不超过24小时的普通单曲,原始数据为时间类型,支持直接排序、时长计算,格式化字段自动维护:

CREATE TABLE musics (
    id INT PRIMARY KEY IDENTITY(1,1),
    songName NVARCHAR(100) NOT NULL,
    -- 存储原始时长,精确到秒
    songDuration TIME(0) NOT NULL CHECK (CAST(songDuration AS DATETIME) > '00:00:00'),
    -- 持久化计算列,插入/更新时自动生成mm:ss格式字符串,查询直接调用即可
    songDurationText AS FORMAT(songDuration, 'mm\:ss') PERSISTED
    -- 其余字段按需补充
)
  • 优势:原始数据结构化,做时长统计、排序无需额外转换,ASP.NET Core读取songDurationText字段直接得到mm:ss格式字符串,无需二次处理。
  • EF Core映射提示:给songDurationText属性加上[DatabaseGenerated(DatabaseGeneratedOption.Computed)]注解即可,无需手动赋值。

方案二:INT存储总秒数 + 持久化计算列(适配超长音频场景)

如果存在时长超过24小时的串烧、合集类音频,用INT存储总秒数更灵活:

CREATE TABLE musics (
    id INT PRIMARY KEY IDENTITY(1,1),
    songName NVARCHAR(100) NOT NULL,
    -- 存储总秒数,无24小时上限
    songDurationSeconds INT NOT NULL CHECK (songDurationSeconds > 0),
    -- 自动生成mm:ss格式,如需支持小时可将格式调整为'HH\:mm\:ss'
    songDurationText AS CONCAT(
        FORMAT(songDurationSeconds / 60, '00'),
        ':',
        FORMAT(songDurationSeconds % 60, '00')
    ) PERSISTED
    -- 其余字段按需补充
)
  • 优势:无时长上限,自定义格式化灵活度更高。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 01:27:02