2017-04-07 54 views
0

我正在創建從PostgreSQL獲取數據並插入到MS SQL數據庫中。因此,PostgreSQL中的字段的數據類型爲Timestamp without time zone,這需要進入MS SQL DB中DataTime類型的字段。我使用的腳本functoid在地圖上,將它們轉換和insert.Below是我使用映射中的問題

public string ConvertSampDateRec(string dateReceived) 
{ 
    DateTime recDate; 
    DateTime.TryParseExact("yyyy-MM-dd HH:mm:ssZ", dateReceived, System.Globalization.CultureInfo.CurrentCulture, System.Globalization.DateTimeStyles.None, out recDate); 
    string returnRec = recDate.ToString("yyyy-MM-ddTHH:mm:ss"); 
    return returnRec; 
} 

腳本,我不知道,如果格式是yyyy-MM-dd HH:mm:ssZ爲無時區的時間戳。有了這個,我即使不null.I試圖即使使用DateTimeOffset但仍然沒有幫助得到錯誤像下面

Details:"System.Data.SqlTypes.SqlTypeException: SqlDateTime overflow. Must be between 1/1/1753 12:00:00 AM and 12/31/9999 11:59:59 PM.

它使得returnRec0001-01-01T00:00:00所有dateReceived

+0

你可以給我們一個想法,在空值和非空值轉換之前dateReceived字符串是什麼? –

+0

@PieterVandenheede dateReceived字符串持有類似於8/6/2013 1:19:57 PM我改變了我的格式說明符if(System.DateTime.TryParseExact(dateReceived,「M/d/yyyy h:mm:ss tt」,System .Globalization.CultureInfo.CurrentCulture,System.Globalization.DateTimeStyles.None,out recDate))''但'returnRec'爲'0001-01-01T00:00:00' – xyz

+0

您的格式以空字符串開頭。 (DateTime.TryParseExact(dateReceived,「M/d/yyyy h:mm:ss tt」,System.Globalization.CultureInfo .InvariantCulture,System.Globalization .DateTimeStyles.None,out recDate)) return recDate.ToString(「yyyy-MM-ddTHH:mm:ss」); –

回答

0

你可以將0001-01-01T00:00:00放入SQL數據庫中,如錯誤消息所示,可以處理的最小日期爲1753-01-01T00:00:00

另外,您爲什麼不處理來自的返回值?你無法知道當它無法解析字符串的方式,所以你得到了一個DateTime對象的默認(等於DateTime.MinValue)

確保您處理類似這樣的回報:

private static DateTime _sqlDefaultDateTime = new DateTime(1753, 01, 01); 

private void foo() 
{ 
    string parsedDate; 
    if (!DateTime.TryParseExact()) 
    { 
     parsedDate = _sqlDefaultDateTime; 
    } 
} 
+0

我明白,從錯誤消息,但當我們轉換它是自動製作0001-01-01T00:00:00。你能告訴我,如果我的代碼有問題嗎 – xyz

+0

編輯我的答案 – Dmihawk

+0

即使對於非空值它是失敗的。 – xyz

0

HOLD ON everyone。對不起,但這種情況持續不斷,還有另外兩個問題需要解決。

OP需要使用'o'格式發出xs:datetime兼容字符串,以便它可以正確轉換爲SQL日期時間。

這是一個BizTalk特定的情況,這個解釋已經提供了幾次。

還有一些額外的處理需要已經在另一篇文章中描述過。

+0

請問您可以將它標記爲重複嗎? –

+0

我看不到它們了。請忽略我最後的評論。 –