2016-11-22 10 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キャストとコンバート。探している番号は127です。 –

+0

Btw、[日付はSQL Serverの表示形式と一緒に保存されていません。](http://stackoverflow.com/a/30033028/3094533) –

+0

ありがとうございました。私はキャストと変換について知らなかった! – user6927085

答えて

0

smalldatetime形式に変更する場合は、タイムスタンプを挿入する必要があります。

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

あなたはもう少し勤勉になりたい場合は、より正確な正規表現を使用したい:、スペースでTを置き換えるタイムゾーンのオフセットを削除し、ちょうどUTCタイムスタンプを挿入することであろう最も簡単な方法タイムスタンプを照合する:^(\d{4}-\d{2}-\d{2})T(\d{2}:\d{2}:\d{2})\+\d{2}:\d{2}$

実際に勤勉になりたい場合は、parseとタイムスタンプを使用してください。

$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');" 
関連する問題