SQL Server获取当前时间并转换为多种标准格式
本文详细列出SQL Server中使用CONVERT函数配合不同样式代码获取GETDATE()时间的结果对照表,包含美国式、欧洲式、ISO8601及自定义格式,解决时间格式化查询需求。
核心逻辑与准备
在 SQL Server (T-SQL) 中,获取系统当前时间与日期通常使用内置函数 GETDATE()。该函数返回一个 datetime 类型的数据。
要将这个标准的 DateTime 对象转换为符合人类阅读习惯或特定业务需求的字符串格式,最常用的方法是使用 CONVERT 或 CAST 函数。其中 CONVERT(varchar(100), GETDATE(), style_code) 是最灵活的方式,第三个参数 style_code(整数)决定了输出的具体样式。
注意: 虽然 varchar(100) 足以容纳绝大多数格式,但在实际开发中建议根据目标格式的实际长度(如固定长度的 'yyyy-MM-dd' 可用 varchar(10))以优化存储和传输。
第1步:常用基础日期与时间格式
以下是处理最广泛使用的几种时间显示格式的查询代码与对应结果示例:
-- 美国格式: MM/DD/YY (例如 05/16/06)
Select CONVERT(varchar(100), GETDATE(), 1);
-- 欧盟格式(带点): YY.MM.DD (例如 06.05.16)
Select CONVERT(varchar(100), GETDATE(), 2);
-- 欧盟格式(带斜杠): DD/MM/YY (例如 16/05/06)
Select CONVERT(varchar(100), GETDATE(), 3);
-- 仅显示时间 HH:MI:SS (例如 10:57:46)
Select CONVERT(varchar(100), GETDATE(), 8);
-- 国际标准化格式: YYYY-MM-DD HH:MI:SS (例如 2006-05-16 10:57:47)
Select CONVERT(varchar(100), GETDATE(), 20); -- 或 120
第2步:完整年份与精确到毫秒的格式
在处理日志记录、数据归档或需要明确区分世纪时,四位数的年份和更精细的时间精度显得尤为重要:
-- 完整年月日 (YYYY-MM-DD)
Select CONVERT(varchar(100), GETDATE(), 23);
-- 结果类似: 2006-05-16
-- ISO 8601 格式: YYYYMMDD (适合排序)
Select CONVERT(varchar(100), GETDATE(), 112);
-- 结果类似: 20060516
-- 带有毫秒的标准时间戳 (YYYY-MM-DD HH:MI:SS.MMMM)
Select CONVERT(varchar(100), GETDATE(), 21);
-- 结果类似: 2006-05-16 10:57:47.157
第3步:美式与其他特定区域格式
针对特定地区习惯或数据库兼容性问题,可能需要特定的分隔符或顺序:
-- 美式长格式: MM/DD/YYYY (例如 05/16/2006)
Select CONVERT(varchar(100), GETDATE(), 101);
-- 带有 AM/PM 标识的美式格式
Select CONVERT(varchar(100), GETDATE(), 9);
-- 结果类似: 05 16 2006 10:57:46:827AM
-- 纯时间部分 HH:MI:SS (24小时制)
Select CONVERT(varchar(100), GETDATE(), 24);
其他特殊格式参考
以下代码列出了更多不常用的格式,包括日本 imperial calendar、阿拉伯历以及一些不带分隔符的紧凑格式。在实际应用中请根据需要选取:
- Style 126: 典型的 XML 日期格式 (
2006-05-16T10:57:49.827)。 - Style 130/131: 阿拉伯/伊斯兰日历相关格式。
- Style 102: 欧洲标准年/月/日带点分隔 (
2006.05.16)。 - Style 111: 日本标准年/月/日 (
2006/05/16)。
通过改变 CONVERT 函数的第三个参数,您可以灵活适配任何业务场景下的时间展示需求。对于程序端二次处理,推荐优先使用 Style 120/121 (标准通用) 或 Style 126 (JSON/XML友好)。
以上就是SQL Server获取各种形式的时间的详细内容,更多关于SQL Server时间格式化的资料请关注本站其它相关文章!
本站声明
本文内容仅供参考,不代表本站观点。转载或引用请注明出处。如发现内容问题,请通过联系我们页面反馈。













