2013-04-15 102 views
0

我有一个SQL Server 2008.我得到一个icinga/nagios时间戳服务器停机时间。如何将Nagios时间戳转换为日期时间?

它正是这种格式Wed Apr 10 14:45:00 CEST 2013

这是一个奇怪的格式对我来说。我想将它转换成t-sql datetime - 但不知道如何。

+0

时间戳总是CEST,还是还有其他时区?并且,如何将数据导入到SQL Server中,使用[ISO 8601格式](http://msdn.microsoft.com/zh-cn/library/ms187819.aspx)将数据转换为数据库可能更容易一种具有良好文本解析和/或日期库支持的语言,然后加载它。 – Pondlife

回答

1

由于CEST是+02:00

select 
CONVERT(VARCHAR(3), DATENAME(WEEKDAY, 
switchoffset(CAST(date_column_name as datetimeoffset),'+02:00')), 100) 
+ ' ' + 
CONVERT(VARCHAR(3), DATENAME(MM, 
switchoffset(CAST(date_column_name as datetimeoffset),'+02:00')), 100) 
+ ' ' + 
DATENAME(DAY, 
switchoffset(CAST(date_column_name as datetimeoffset),'+02:00')) 
+ ' ' + 
CONVERT(VARCHAR(8), 
switchoffset(CAST(date_column_name as datetimeoffset),'+02:00'), 108) 
+ ' CEST ' + 
DATENAME(YEAR, 
switchoffset(CAST(date_column_name as datetimeoffset),'+02:00')) 
from adm_co_users 

我第一Converting the Date to CEST Time Zone然后提取日期的要求。

1

如何:

select Cast( 
-- Day 
substring(@sTimestamp, 9, 2) + ' ' 
-- Month 
+ substring(@sTimestamp, 5, 3) + ' ' 
-- Year 
+ substring(@sTimestamp, 26, 4) + ' ' 
-- Time 
+ substring(@sTimestamp, 12, 8) + ' ' 
as datetime) 

这不会做的时区东西虽然 - 我建议你把东西在那。

+0

+1经验值。但是我是'SQL'中的新手,因此**外行人方法**。如何做很多搜索来获得答案。但你的答案是最好的。 – Luv