SQL查询如何格式化日期去除秒数 实现表2日期匹配表1格式
代码错误说明
你的查询存在两处核心问题:
- 格式占位符使用错误:SQL Server
FORMAT函数中,小写mm代表分钟,代表月份的正确占位符是大写MM,占位符写反会导致月份位置输出错误的分钟数值。 - 格式串缺少秒级占位:表1的日期格式包含秒值,你写的格式串仅配置到分钟位(
HH:mm),没有追加秒占位符:ss,输出自然不会显示秒。
另外表2日期末尾的.0000000是datetime2(7)类型的默认输出特征,只要格式串明确指定输出到秒位,就不会显示这部分亚秒精度的小数后缀。
修正方案
直接修正FORMAT函数的格式串即可得到和表1完全一致的输出:
SELECT FORMAT(MAX(date1), 'yyyy-MM-dd HH:mm:ss') FROM table2
如果追求更高的查询性能(FORMAT函数属于CLR实现,执行效率远低于原生日期函数),可以用原生CONVERT函数实现同等效果:
-- 方式1:转成datetime类型自动丢弃亚秒小数,默认输出格式与表1匹配 SELECT CONVERT(datetime, MAX(date1)) FROM table2 -- 方式2:指定20号格式码,固定输出yyyy-MM-dd HH:mm:ss格式的字符串 SELECT CONVERT(varchar(19), MAX(date1), 20) FROM table2
内容的提问来源于stack exchange,提问作者IamWarmduscher
相关产品推荐
相关产品推荐

