簡體   English   中英

將字符串轉換為 SQL Server 中的 DateTimeoffset

[英]Convert string in to the DateTimeoffset in SQL Server

我正在嘗試從 psql 數據庫中提取數據並使用 BizTalk 將它們插入到 SQL Server 數據庫中。 psql 中有一個名為createddate的列,類型為TimeStamp ,時區為createddate 6/30/2016 12:00:00 AM

我想將該數據插入到 SQL Server 列中,該列名為DateCreated ,類型為datetimeoffset 由於我使用 BizTalk,所有數據都被處理為 sting,所以我使用以下腳本

public string ConvertDateCreated(string dateCreated)
{
     System.Globalization.CultureInfo provider = System.Globalization.CultureInfo.InvariantCulture;
     return DateTime.ParseExact(dateCreated, "MMddyyyy", provider).ToString("yyyyMMdd");
} 

在此處輸入圖片說明

但它拋出一個錯誤:

字符串未被識別為有效的 DateTime。

異常類型:FormatException
來源:mscorlib
目標站點:System.DateTime ParseExact(System.String, System.String, System.Globalization.DateTimeFormatInfo, System.Globalization.DateTimeStyles)

以下是識別異常發生位置的堆棧跟蹤

在 System.DateTimeParse.ParseExact(String s, String format, DateTimeFormatInfo dtfi, DateTimeStyles style)
在 System.Xml.Xsl.CompiledQuery.Script1.ConvertDateCreated(String dateCreated)
在(XmlQueryRuntime {urn:schemas-microsoft-com:xslt-debug}runtime,XPathNavigator {urn:schemas-microsoft-com:xslt-debug}current)
在(XmlQueryRuntime {urn:schemas-microsoft-com:xslt-debug}runtime,XPathNavigator {urn:schemas-microsoft-com:xslt-debug}current)
在根(XmlQueryRuntime {urn:schemas-microsoft-com:xslt-debug}runtime)
在執行(XmlQueryRuntime {urn:schemas-microsoft-com:xslt-debug}runtime)
在 System.Xml.Xsl.XmlILCommand.Execute(Object defaultDocument, XmlResolver dataSources, XsltArgumentList argumentList, XmlSequenceWriter results)
在 System.Xml.Xsl.XmlILCommand.Execute(Object defaultDocument, XmlResolver dataSources, XsltArgumentList argumentList, XmlWriter writer)
在 System.Xml.Xsl.XslCompiledTransform.Transform(IXPathNavigable 輸入,XsltArgumentList 參數,XmlWriter 結果,XmlResolver documentResolver)

對於 ParseExact,您的源日期格式應該類似於"M/dd/yyyy hh:mm:ss tt"

public static string ConvertDateCreated(string dateCreated)
{
    System.Globalization.CultureInfo provider = 
         System.Globalization.CultureInfo.InvariantCulture;
    return DateTime.ParseExact(dateCreated, "M/dd/yyyy hh:mm:ss tt", provider)
             .ToString("yyyyMMdd");
}

適用於我的時區 sql server datetimeoffset 類型的格式是:

c.CreationDateTime = DateTime.ParseExact(rdr["CreationDateTime"].ToString(),
                     "dd/MM/yyyy HH:mm:ss zzz", 
                     CultureInfo.InvariantCulture);

首先是您需要獲取 psql datetime "M/d/yyyy hh:mm:ss tt"的日期時間格式

然后使用DateTimeOffset來解析你的psql datetime

public static string ConvertDateCreated(string dateCreated)
    {
        System.Globalization.CultureInfo provider =  System.Globalization.CultureInfo.InvariantCulture;
        return DateTimeOffset.ParseExact(dateCreated, "M/d/yyyy hh:mm:ss tt", provider).ToString();
    }

要檢查結果,請使用您的 sql datetimeoffset輸出

select cast('6/30/2016 12:00:00 AM +00:00' as datetimeoffset)
    

嘗試 .NET 小提琴https://dotnetfiddle.net/ZdpLFA

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM