SQL中使用DATEADD加天数后如何输出dd/mm/yyyy hh:mm:ss tt格式日期
实现方法
你当前使用的是SQL Server语法体系,核心问题是日期时间数据的展示/存储格式需要自定义,可按你的实际场景选择对应方案:
- 若
value字段为原生日期时间类型
日期时间类型的字段存储本身不携带格式,你看到的Jul 3 2021 12:30PM是数据库客户端的默认展示样式,查询时指定格式化规则即可得到目标格式,查询语句如下:SELECT FORMAT(value, 'dd/MM/yyyy hh:mm:ss tt') AS formatted_value FROM TableName WHERE SomeCondition - 若
value字段为字符串类型,需要直接存储为目标格式
调整更新语句,在日期计算后追加格式化逻辑即可:UPDATE TableName SET value = FORMAT(DATEADD(d, 29, GETDATE()), 'dd/MM/yyyy hh:mm:ss tt') WHERE SomeCondition
低版本兼容方案
如果你使用的是SQL Server 2012之前的版本,不支持FORMAT函数,可使用CONVERT函数实现同等效果:
UPDATE TableName SET value = CONVERT(VARCHAR(10), DATEADD(d,29,GETDATE()), 103) + ' ' + CONVERT(VARCHAR(8), DATEADD(d,29,GETDATE()), 108) + ' ' + RIGHT(CONVERT(VARCHAR(30), DATEADD(d,29,GETDATE()), 9), 2) WHERE SomeCondition
注意:非必要不推荐将日期时间数据存储为字符串类型,原生日期时间类型在后续做计算、排序、过滤时的效率和兼容性都更好,建议仅在查询展示环节做格式化。
格式化参数区分大小写:MM代表月份,mm代表分钟,写错会导致输出结果不符合预期。
内容的提问来源于stack exchange,提问作者rahul Khapekar
相关产品推荐
相关产品推荐

