2014-02-21 7 views
0

Я делаю небольшую программу, и она использует WMI. Существует значение, которое, предположительно, является датой и временем. Значение, как представляется:Какой формат даты? (SELECT * FROM Win32_PrintJob)

"20140221163958.621000+330". 

Может кто-нибудь сказать мне, какой формат это и как преобразовать это в нормальный читаемый DateAndTime.

+0

Если бы мне пришлось держать пари догадка, я бы сказал, это YYYYMMDDHHMMSS. Часть после точки, в которую я вздрагиваю. –

+0

Это была моя первая мысль :) Но что там делает +330 (Timezome)? И что с "." ;) –

+0

Формат 'YYYYMMDDHHMMSS.US + TZ', что означает [4-значный год] [2-значный месяц] [2-значный день] [2-значный час] [2-значная минута] [2-значный секунда] ] [наносекунды] + [часовой пояс]. не знаю, как его перевести, но, возможно, это приблизит вас. – PlantTheIdea

ответ

0

Это официальный TechNet статьи о формате временных меток для запросов WMI:

http://technet.microsoft.com/en-us/library/ee156576.aspx

Ведьмы, как это так случилось, дает хороший пример в VB:

dtmInstallDate = "20140221163958.621000+330" 

WMIDateStringToDate = CDate(Mid(dtmInstallDate, 5, 2) & "/" & _ 
Mid(dtmInstallDate, 7, 2) & "/" & Left(dtmInstallDate, 4) _ 
    & " " & Mid (dtmInstallDate, 9, 2) & ":" & _ 
     Mid(dtmInstallDate, 11, 2) & ":" & Mid(dtmInstallDate, _ 
      13, 2)) 

' would produce "2/21/14 4:39:58 PM" 
+0

Это ТОЧНАЯ та же статья, на которую я смотрел. –

+0

@CoderGuy Это ответ на ваш вопрос? –

+0

Другой способ в System.Management.dll - это ManagementDateTimeConverter.ToDateTime («20140221163958.621000 + 330») даст правильную структуру даты –

0

вы можете попробовать это путь

SELECT 
    SUBSTRING(date, 1, 4) as year,SUBSTRING(date, 5, 2) as month, 
    SUBSTRING(date, 7, 2) as day,SUBSTRING(date, 9, 2) as hours, 
    SUBSTRING(date, 11, 2) as minutes,SUBSTRING(date, 13, 2) as seconds 
    FROM 
    table1 

DEMO HERE

если вы хотите обновить таблицу и изменить эту заполняйте колонку это

Update table1 set date = 
    concat(SUBSTRING(date, 1, 4),' ',SUBSTRING(date, 5, 2),' ', 
    SUBSTRING(date, 7, 2),' ',SUBSTRING(date, 9, 2),':', 
    SUBSTRING(date, 11, 2),':',SUBSTRING(date, 13, 2)) 

demo

0

Быстрый поиск показал, что это стандартный формат для Windows (UTC) (http://msdn.microsoft.com/en-us/library/aa394370(v=vs.85).aspx для дополнительной ссылки). Чтобы преобразовать его, я использовал простую функцию.

Private Function ConvertToDateTime(ByVal in As String) As String 

    Return CDate(Mid(inDate, 5, 2) & "/" & _ 
Mid(inDate, 7, 2) & "/" & Left(inDate, 4) _ 
    & " " & Mid(inDate, 9, 2) & ":" & _ 
     Mid(inDate, 11, 2) & ":" & Mid(inDate, _ 
      13, 2)) 

End Function 

http://technet.microsoft.com/en-us/library/ee156576.aspx

Смежные вопросы