簡體   English   中英

.net datetime與使用bulkcopy的毫秒級SQL Server引發異常

[英].Net datetime with milliseconds sql server using bulkcopy thows exception

我有這段代碼,它引發異常。

SqlConnection con;
con = new SqlConnection(connectionStr);
SqlCommand cmd = con.CreateCommand();
cmd.CommandType = System.Data.CommandType.Text;     
cmd.CommandText = @"select [ID], [VERSION_ID], '08/26/2015 09:33:24:717 AM' as [Added_Dt],     [Loc_ID] as Column1
from dbo.Source where Added_Dt between CONVERT(DATETIME,'08/24/2015 09:25:43:283 AM') and CONVERT(DATETIME,'08/24/2015 09:25:43:283 AM')";

    cmd.CommandTimeout = con.ConnectionTimeout;
    con.Open();
    SqlDataReader rdr = cmd.ExecuteReader();
    System.Data.SqlClient.SqlBulkCopy bcp = new SqlBulkCopy(destconnectionStr, SqlBulkCopyOptions.UseInternalTransaction);
    bcp.BatchSize = (int)Global.BatchWriteThreshold;
    bcp.DestinationTableName = destinationTableName;
    bcp.NotifyAfter = (int)Global.BatchWriteThreshold;
    bcp.SqlRowsCopied += new SqlRowsCopiedEventHandler(bcp_SqlRowsCopied);
    bcp.WriteToServer(rdr);

目標表(SQL Server 2005):ID(int,不為null),VERSION_ID(int,不為null),Added_Dt(DATETIME,不為null),Column1(varchar2(50),不為null)

如果與SqlBulkCopy一起使用,則會引發異常,但在單個更新中或直接從SQL Management Studio使用ado.net時,運行不會出現任何問題。 我發現刪除毫秒部分使批量復制無例外地運行,但是我希望毫秒數在那里。 該如何解決?

'08/24/2015 09:25:43:283 AM'不是有效的日期字符串。 最后:應該是一個. 含義:

'08/24/2015 09:25:43.283 AM'

當然,這確實可以在SSMS中正確轉換:

SELECT CONVERT(DATETIME,'08/24/2015 09:25:43:283 AM');

如果無法解決問題,則需要提供確切的異常消息。

暫無
暫無

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

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