2016-11-22 591 views
0

我从MailChimp获取格式为yyyy-MM-ddTHH:mm:ss+00:00的日期时间。一个例子是2016-11-14T17:31:19+00:00将格式化为yyyy-MM-ddTHH:mm:ss + 00:00转换为SQL Server日期时间格式

我不知道我应该如何重新格式化以符合SQL Server Datetime格式。我在PowerShell中编码。

#HTTP Get returns datetime from mailchimp in format yyyy-MM-ddTHH:mm:ss+00:00 
$MailChimpTimeGMT = Invoke-RestMethod -Method Get -Uri "$URL$endpoint" -Headers $auth -ContentType "application/json" 

$formattedTime = ((Get-Date).ToUniversalTime()).ToString("yyyy-MM-ddTHH:mm:ss+00:00") 

if ($formattedTime -lt $MailChimpTimeGMT) { 
    #$DBase and $DBSvr declared 
    # 
    #Need to convert $MailChimpTimeGMT in match SQL date time format without loss 
    # 
    $sqlcmd = "INSERT INTO dbo.MAILCHIMP_LISTSERVE (TIME_STAMP,MODIFY_SOURCE)" + 
      " VALUES (" + $MailChimpTimeGMT + ", powershell);" 

    $data = Invoke-Sqlcmd -Query $sqlcmd -Database $DBase -ServerInstance $DBSvr 
} 
+0

Google cast and convert。您正在寻找的数量是127. –

+0

Btw,[日期不存储与它的显示格式在SQL Server中。](http://stackoverflow.com/a/30033028/3094533) –

+0

谢谢。我不知道如何转换和转换! – user6927085

回答

0

如果将其更改为smalldatetime格式,您应该可以插入时间戳。最简单的方法是用空格来代替T,取出时区偏移,而只需插入UTC时间戳:

$ts = $MailChimpTimeGMT -replace '^(.*?)T(.*?)\+.*', '$1 $2' 
$sqlcmd = "INSERT INTO dbo.MAILCHIMP_LISTSERVE (TIME_STAMP, MODIFY_SOURCE)" + 
      " VALUES ('$ts', 'powershell');" 

如果你想多一点勤奋,你会使用一个更精确的正则表达式匹配时间戳:^(\d{4}-\d{2}-\d{2})T(\d{2}:\d{2}:\d{2})\+\d{2}:\d{2}$

如果你想真的勤奋,你其实parseformat时间戳。

$infmt = 'yyyy-MM-ddTHH:mm:sszzz' 
$outfmt = 'yyyy-MM-dd HH:mm:ss' 
$culture = [Globalization.CultureInfo]::InvariantCulture 

$ts = [DateTime]::ParseExact($MailChimpTimeGMT, $infmt, $culture).ToString($outfmt) 
$sqlcmd = "INSERT INTO dbo.MAILCHIMP_LISTSERVE (TIME_STAMP, MODIFY_SOURCE)" + 
      " VALUES ('$ts', 'powershell');" 
相关问题