SqlBulkCopy更改日期格式

问题描述 投票:0回答:1

我正在使用C#和SQL Server 2016从json数据中使用SqlBulkCopy。>>

原始字符串是:"1979-09-30T23:00:00.000+0000"

但是当使用SqlBulkCopy复制到SQL Server表中时,字符串变为"01/10/1979 00:00:00"

我正在使用varchar(100)作为此列的数据类型。

我尝试使用datedatetimedatetimeoffset数据类型,但是每次都遇到转换错误。

create table imp_Employees(
matricule  nvarchar(20),
pname  nvarchar(100),
birthdate  varchar(100) -- I tried with date, datetime and datetimeoffset data types, but I was getting conversion errors each time.
)

如何保存原始数据?

public static void BulkCopy(DataTable myDataTable)
{           
    using (SqlConnection connection = new SqlConnection(ConfigurationManager.ConnectionStrings["2"].ConnectionString))
    {
        connection.Open();

        using (SqlBulkCopy bulkCopy = new SqlBulkCopy(connection))
        {
            foreach (DataColumn c in myDataTable.Columns)
                bulkCopy.ColumnMappings.Add(c.ColumnName, c.ColumnName);

            bulkCopy.DestinationTableName = myDataTable.TableName;

            try
            {
                bulkCopy.WriteToServer(myDataTable);
            }
            catch (Exception ex)
            {
                log.Error(ex.Message);                        
            }
        }
    }
}

这里是调用它的方法

public static void Employee()
        {
            try
            {                
                DataTable MyTable = Clapi.GetApiData(ConfigurationManager.AppSettings.Get("api_employe"), "imp_Employees").GetAwaiter().GetResult();
                log.Info(String.Format("Table: {0} Count {1}", MyTable.TableName, MyTable.Rows.Count));
                Cldb.BulkCopy(MyTable);
            }
            catch(Exception ex)
            {
                log.Error(ex.Message);
            }
        }

//此处是GetApiData

public static async Task<DataTable> GetApiData(string Url ,string TableName)
        {
            try
            {
                var client = new HttpClient();
                var request = new HttpRequestMessage(HttpMethod.Get, Url);
                var response = await client.SendAsync(request);
                var contents = response.Content.ReadAsStringAsync().Result;
                var Mytable = JsonConvert.DeserializeObject<DataTable>(contents);
                Mytable.TableName = TableName;
                return Mytable;
            }
            catch(Exception ex)
            {
                log.Error("GetApiData; url="+Url+";TableName:"+TableName+ex.Message);
                return null;
            }
        }

我正在使用C#和SQL Server 2016从json数据中使用SqlBulkCopy。原始字符串是:“ 1979-09-30T23:00:00.000 + 0000”但是当使用SqlBulkCopy复制到SQL Server表中时,字符串.. 。

c# sql-server date-formatting sqlbulkcopy
1个回答
0
投票

您可能在代码中使用了DateTimeOffset。

© www.soinside.com 2019 - 2024. All rights reserved.