根据我在AR Systems上发现的BMC Remedy的文档,MSSQL Server环境中的时间戳(我们在这里使用SQL Server 2005)在UNIX时间戳中存储为 int 数据类型格式。
我不能为我的生活在Business Objects Web Intelligence中获取自定义SQL,让我将此时间戳转换为mm / dd / yyyy格式,我需要能够按日期对记录进行分组(没有时间戳,显然)。我尝试做的任何涉及数学或数据类型转换的操作都会引发“无效类型”错误。我无法将字段转换为int,varchar,datetime或其他任何内容。唯一有效的功能是DATEADD,它仍然返回完整的时间戳。
如何转换?我在这里疯了!
答案 0 :(得分:3)
将GMT / UTC / Zulu转换为当地时区(EDT /纽约):
DATEADD(hour,-5,DATEADD(s,Last_Modified_Date,'1/1/1970 00:00:00'))
用于显示Remedy工作信息条目(Transact-SQL)的示例:
SELECT Work_Log_ID, DATEADD(hour, +12, DATEADD(s, Last_Modified_Date, '1/1/1970 00:00:00')) as Last_Modified_Date , Description, Detailed_Description, Infrastructure_change_ID, Number_of_Attachments
FROM dbo.CHG_WorkLog
WHERE Infrastructure_Change_ID = 'CRQ001261'
ORDER BY Work_Log_ID desc
答案 1 :(得分:0)
为什么这不起作用?
DECLARE @timestamp INT
SELECT @timestamp = DATEDIFF(s,'1/1/1970 00:00:00',GETDATE())
SELECT DATEADD(s,@timestamp,'1/1/1970 00:00:00')
用表中的值替换@Timestamp。
答案 2 :(得分:0)
您可能需要将int时间戳乘以1000. AR系统将日期存储为“秒”的数量,而大多数其他语言将unix时间戳存储为毫秒(以及作为长数据类型)
希望有所帮助!
答案 3 :(得分:0)
转到
用户工具 - >工具 - >选项 - >区域设置标签 - >日期/时间风格 - >自定义格式 - >毫米/日/年