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

SQL Server中如何将Current_Timestamp存储为YYYY-MM-DD hh:mm:ss格式?

问题分析与解决方案

首先得打破一个关键误解:SQL Server里的datetime、datetime2这类日期时间类型,根本不存储你看到的那种“显示格式”。它们在数据库底层是用数值(比如datetime是两个4字节整数,分别存日期和时间偏移)来存储的,你看到的"Feb 22 2018 5:07PM"或者"YYYY-MM-DD hh:mm:ss",只是客户端工具(比如SQL Server Management Studio)或者查询时格式化后的展示效果,不是存储的内容本身。

那你为啥会看到"Feb 22 2018 5:07PM"呢?大概率是你的客户端工具(比如SSMS)的默认显示格式设置问题,或者你查询的时候没有指定格式化方式。

接下来给你几个具体的解决方向:

1. 调整客户端工具的显示格式(以SSMS为例)

如果你只是希望在SSMS里查看时默认显示成"YYYY-MM-DD hh:mm:ss"格式,可以这么改:

  • 打开SSMS,点击顶部菜单的「工具」→「选项」
  • 展开「环境」→「国际设置」
  • 在「日期和时间格式」下拉框里选择「yyyy-MM-dd HH:mm:ss」(或者类似的符合你需求的格式)
  • 重启SSMS后生效

这样你再查看表数据时,日期时间列就会默认显示成你想要的格式了。

2. 查询时指定格式化输出

如果需要在查询结果里得到特定格式的字符串,不要直接查日期列,用CONVERT或者FORMAT函数来转换:

  • 用CONVERT(性能更好,适合SQL Server所有版本):
SELECT CONVERT(VARCHAR(19), YourDateTimeColumn, 120) AS FormattedDateTime
FROM YourTable;

这里的120是SQL Server预定义的格式代码,对应"yyyy-MM-dd HH:mm:ss"。

  • 用FORMAT(更灵活,SQL Server 2012及以上支持):
SELECT FORMAT(YourDateTimeColumn, 'yyyy-MM-dd HH:mm:ss') AS FormattedDateTime
FROM YourTable;

3. 不推荐:存储为字符串类型(谨慎使用)

如果你非要把日期时间以字符串形式存储成"YYYY-MM-DD hh:mm:ss"(非常不推荐,因为会失去日期时间类型的所有优势:比如无法直接做日期运算、索引效率低、容易出现格式错误),那你需要把列类型改成VARCHAR(19)或者NVARCHAR(19),然后插入/更新时转换格式:

UPDATE YourTable
SET YourStringColumn = CONVERT(VARCHAR(19), GETDATE(), 120)
WHERE YourCondition;

但再次强调:这种做法是下下策,除非有特殊业务强制要求,否则强烈建议使用datetime/datetime2等原生日期时间类型。

总结一下:你之前的问题根源是混淆了存储值和显示格式,SQL Server不会存储格式,只存储日期时间的实际值,你看到的格式都是展示层的问题,调整客户端设置或者查询时格式化就能解决。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.19 09:30:40