[英]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.