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

如何批量修改SQL表smalldatetime列的日期格式为yyyy-dd-MM mm:ss

解决SQL中smalldatetime日期显示格式转换问题

首先明确:smalldatetime类型的字段本身不存储格式,它存储的是日期时间的数值,你看到的yyyy-MM-dd HH:mm只是客户端(比如SQL Server Management Studio)的默认显示样式,并非数据本身的格式。所以根本不需要修改表中的每一行数据,只需在查询时指定你要的显示格式即可。

给你两种常用实现方式:

1. 查询时直接转换格式(推荐)

用FORMAT函数可以自定义输出格式,直接得到你要的yyyy-dd-MM HH:mm:

SELECT FORMAT(your_datetime_column, 'yyyy-dd-MM HH:mm') AS 格式化日期
FROM your_table;

如果是SQL Server 2012之前的版本,FORMAT函数不支持,可改用CONVERT配合字符串替换:

SELECT 
    STUFF(CONVERT(VARCHAR(16), your_datetime_column, 120), 9, 2, SUBSTRING(CONVERT(VARCHAR(16), your_datetime_column, 120), 6, 2))
    AS 格式化日期
FROM your_table;

这段代码逻辑是先转成yyyy-MM-dd HH:mm格式,再交换日和月的位置。

2. 不推荐的方式:新增字段存储格式化后的字符串

如果你非要把格式“固定”在表中(非常不建议,会丢失日期类型的所有优势),可以新增字符串类型字段,批量写入格式化后的值:

  • 先添加字段:
ALTER TABLE your_table ADD 格式化日期 VARCHAR(16);
  • 再批量更新:
UPDATE your_table
SET 格式化日期 = FORMAT(your_datetime_column, 'yyyy-dd-MM HH:mm');

⚠️ 注意:这种方式会让后续的日期筛选、排序、运算变得非常麻烦,还会浪费存储空间,除非有特殊需求,否则不推荐这么做。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.12 22:32:06