Directus中存储时长值的数据类型选型咨询
在Directus中存储时长(时间间隔)的方案
Directus目前没有专门用于存储**时长(时间间隔)**的原生字段类型,你可以通过以下两种常用方案实现需求:
方案一:用数字字段存储总时长(推荐)
创建一个integer类型的字段(比如命名为duration_seconds),将时长转换为总秒数存储(例如“1 h, 30 m”存为5400)。
格式化显示
- 在Directus后台的字段设置中,使用显示模板自动转换格式:
{{ Math.floor(value / 3600) }} h, {{ Math.floor((value % 3600) / 60) }} m - 前端调用API时,也可以用同样的逻辑在代码中完成格式转换。
这种方案的优势是查询效率高,便于做时长相关的筛选、排序(比如筛选时长超过2小时的内容)。
方案二:用JSON字段存储结构化时长
创建一个json类型的字段,直接存储包含小时、分钟的结构化数据,例如:
{"hours": 1, "minutes": 30}
读取时直接提取对应字段值拼接成“X h, Y m”的格式即可。这种方式无需计算,但查询时的灵活性不如数字字段。
注意:DATETIME类型确实不适用,它的设计目的是存储具体的时间点(包含日期),而非时间间隔。
内容的提问来源于stack exchange,提问作者Philipp
相关产品推荐
相关产品推荐

