0

根据我在 BMC Remedy 上的 AR Systems 中找到的文档,MSSQL Server 环境中的时间戳(我们在此处使用 SQL Server 2005)以 UNIX 时间戳格式的int数据类型存储。

我一生都无法在 Business Objects Web Intelligence 中获得自定义 SQL 来让我将此时间戳转换为 mm/dd/yyyy 格式,我需要能够按日期对记录进行分组(显然没有时间戳)。我尝试做的任何涉及数学或数据类型转换的操作都会引发“无效类型”错误。我无法将该字段转换为 int、varchar、datetime 或其他任何内容。唯一有效的函数是 DATEADD,它仍然返回完整的时间戳。

我怎样才能得到这个转换?我要疯了!

4

4 回答 4

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
于 2012-07-26T01:06:37.617 回答
0

用户工具 -> 工具 -> 选项 -> 区域设置选项卡 -> 日期/时间样式 -> 自定义格式 -> mm/dd/yyyy

于 2012-05-02T19:00:40.093 回答
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。

于 2011-10-04T17:51:27.877 回答
0

您可能需要将 int 时间戳乘以 1000。AR 系统将日期存储为“秒”数,而大多数其他语言将 unix 时间戳存储为毫秒(并且作为长数据类型)

希望有帮助!

于 2011-10-05T23:34:01.310 回答