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

SQL Server 2008+:SSMS中能否通过开关选项统一显示DATE列为短日期?

关于SQL Server中自动显示短日期格式的解决方案

嘿,这个需求我太懂了——每次用SELECT *查一堆表,还要挨个找日期列转格式确实麻烦!不过得先给你明确说:SQL Server并没有像SET ANSI_NULLS那样的全局查询开关,能直接让所有DATE列自动以短日期(无时间)格式显示。原因是这类显示格式的控制更多属于客户端(比如SSMS)的渲染逻辑,而非数据库引擎的查询行为开关。

不过别担心,有几个实用的替代方案能帮你解决这个问题:

1. 调整SSMS的全局显示设置(最省心)

这是最适合你频繁用SELECT *的方案,一次设置永久生效:

  • 打开SSMS,点击顶部菜单栏的「工具」→「选项」
  • 在弹出的窗口里,依次展开「环境」→「查询结果」→「SQL Server」,然后选择你常用的结果模式(「结果到网格」或「结果到文本」)
  • 找到「日期和时间格式」选项,选择你需要的短日期格式(比如yyyy-MM-dd就是常见的短日期格式)
  • 点击确定后,后续所有查询里的DATE(甚至DATETIME)列都会自动以你设置的短日期格式显示,完全不用手动转换!

2. 给常用表创建视图(针对性解决)

如果只是特定几张表需要频繁查询,建个视图封装格式转换会更灵活:

CREATE VIEW vw_YourTableName
AS
SELECT
    -- 保留所有其他列,只转换日期列
    *,
    CONVERT(VARCHAR(10), YourDateColumn1, 23) AS FormattedDate1,
    CONVERT(VARCHAR(10), YourDateColumn2, 23) AS FormattedDate2
    -- 把表中所有DATE/DATETIME列都按这种方式转换
FROM YourTableName;

之后你只需要执行SELECT * FROM vw_YourTableName,就能直接看到格式化后的日期列了。要是觉得原列名冲突,也可以把原列排除,只保留格式化后的列。

补充说明

顺便提一句:SQL Server的DATE类型本身是只存储日期部分的,没有时间信息——如果你看到查询结果里带时间,大概率是列类型是DATETIME或DATETIME2,这时候上面的两种方案同样适用。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.19 03:09:45