如何在Sybase SQL查询脚本中转换ApplicationDate字段的日期格式
Sybase日期格式转换解决方案
Sybase ASE 并不支持 FORMAT() 函数(该函数为SQL Server 2012及以上版本特有),这是你之前的语句未生效的核心原因。针对你的需求,推荐两种可行方案:
方案一:使用CONVERT()函数(推荐)
Sybase原生支持CONVERT()函数进行日期格式转换,其中样式码121正好对应你需要的yyyy-MM-dd HH:mm:ss.fff格式:
SELECT EmployeeCode, EmployeeName, CONVERT(varchar(23), ApplicationDate, 121) AS ApplicationDate FROM dbo.employee_leaves
varchar(23)是该格式字符串的固定长度(例如2023-04-16 07:09:47.563共23个字符),避免截断或冗余。- 样式码
121代表ODBC标准带毫秒的日期格式,完全匹配你的需求。
方案二:DATEPART拼接(兼容旧版Sybase)
如果你的Sybase版本较旧不支持样式码121,可以通过DATEPART()提取日期各部分并补零拼接:
SELECT EmployeeCode, EmployeeName, STR(DATEPART(year, ApplicationDate), 4) + '-' + RIGHT('0' + STR(DATEPART(month, ApplicationDate), 2), 2) + '-' + RIGHT('0' + STR(DATEPART(day, ApplicationDate), 2), 2) + ' ' + RIGHT('0' + STR(DATEPART(hour, ApplicationDate), 2), 2) + ':' + RIGHT('0' + STR(DATEPART(minute, ApplicationDate), 2), 2) + ':' + RIGHT('0' + STR(DATEPART(second, ApplicationDate), 2), 2) + '.' + RIGHT('00' + STR(DATEPART(millisecond, ApplicationDate), 3), 3) AS ApplicationDate FROM dbo.employee_leaves
- 通过
RIGHT('0' + ..., 2)确保月、日、时、分、秒为两位数字,不足补零;毫秒部分用RIGHT('00' + ..., 3)确保三位数字。
内容的提问来源于stack exchange,提问作者Bami
相关产品推荐
相关产品推荐

