SQL FORMAT 函数是 SQL Server 2012 引入的,用于格式化日期、时间和数字,非常实用。基本语法:FORMAT ( value, format [, culture ] )。例如:SELECT FORMAT(GETDATE(), 'yyyy-MM-dd') AS FormattedDate; 这会输出当前日期如 2023-10-15。网友推荐技巧:用 'd' 格式化日期为短日期,'yyyy-MM-dd HH:mm:ss' 自定义格式,culture 参数如 'zh-CN' 支持中文显示。
FORMAT函数快速上手
FORMAT(GETDATE(), 'yyyy年MM月dd日') 输出如 2023年10月15日,超级方便日期本地化。数字格式:FORMAT(1234.56, 'N2') 输出 1,234.56 带千位分隔符和小数点后两位。SELECT FORMAT(SalesAmount, 'C', 'en-US') FROM Sales; 显示货币如 $1,234.56。必学:避免在 WHERE 子句中使用 FORMAT,因为性能差,只用于 SELECT 输出。
网友分享的FORMAT日期技巧
常用日期格式:'yyyy-MM-dd' 标准日期,'MMM dd, yyyy' 如 Oct 15, 2023,'dddd, MMMM dd, yyyy' 如 Sunday, October 15, 2023。技巧:FORMAT(CAST('20231015' AS DATETIME), 'yyyy/MM/dd') 处理字符串转日期。文化参数 'fr-FR' 输出法语日期。实际案例:SELECT FORMAT(OrderDate, 'yyyy-MM-dd HH:mm') FROM Orders ORDER BY OrderDate DESC;
数字和货币格式化实用例
FORMAT(12345.67, '#,##0.00') 输出 12,345.67。百分比:FORMAT(0.123, 'P2') 输出 12.30%。网友tips:结合 CASE WHEN 使用,如 CASE WHEN Amount > 0 THEN FORMAT(Amount, 'C') ELSE '0.00' END。性能提示:大量数据时用 CONVERT 代替 FORMAT 以提升速度。
高级用法与注意事项
FORMAT 支持自定义格式字符串,如 'yyyy-MM-ddTHH:mm:ss.fffZ' 输出 ISO 8601 格式。文化示例:FORMAT(GETDATE(), 'D', 'zh-CN') 输出完整中文日期。常见坑:FORMAT 不支持时区转换,用 AT TIME ZONE 结合。网友推荐:存储时用 DATETIME2,显示时用 FORMAT。
实际查询示例合集
查询1:SELECT FORMAT(SYSDATETIME(), 'u') AS UniversalDate; 输出 UTC 时间。查询2:SELECT ProductName, FORMAT(Price, 'N2') AS FormattedPrice FROM Products; 查询3:SELECT FORMAT(AVG(Salary), 'N0') AS AvgSalary FROM Employees; 这些是网友必备代码片段,直接复制可用。
FAQ
Q: FORMAT函数在哪个SQL Server版本可用?
A: SQL Server 2012 及以上版本。
Q: FORMAT性能为什么慢?
A: 它是 CLR 函数,解析格式字符串开销大,不适合索引或过滤。
Q: 如何格式化为Excel兼容日期?
A: 用 FORMAT(date, 'yyyy-MM-dd') 最通用。
Q: culture参数有哪些选项?
A: 如 'en-US', 'zh-CN', 'fr-FR',用 .NET文化代码。