将日期时间从Excel格式转换为SQL格式

本文关键字:格式 转换 SQL Excel 日期 时间 | 更新日期: 2023-09-27 18:32:06

我正在从 Excel 读取值并将读取行插入到 SQL,但我遇到了日期列的问题。

从Excel中,我正在读取日期23-08-2011 01:33:01,但是在数据库中,这些值存储为2011-08-22 10:21:18.000

有没有办法在 C#(而不是 T-SQL)中将我正在读取的日期转换为yyyy-mm-dd 00:00:00:000格式?我想将23-08-2011 01:33:01转换为2011-08-23 00:00:00:000

将日期时间从Excel格式转换为SQL格式

  1. 使用 DateTime.ParseExact将 Excel 字符串解析为对象DateTime
  2. 使用String.Format和适当的格式字符串将对象格式化为 SQL 格式DateTime

有关如何创建日期时间格式字符串的指南,请参阅以下两个资源:

标准日期和时间格式字符串

自定义日期和时间格式字符串

DateTime excel = DateTime.ParseExact("23-08-2011 01:33:01", "dd-MM-yyyy hh:mm:ss", CultureInfo.InvariantCulture);
String sqlString = String.Format("{0:yyyy-MM-dd hh:mm:ss:ffff}", excel);

使用 DateTime 中的 ParseExact 方法

DateTime parsedDate = DateTime.ParseExact("23-08-2011 01:33:01", 
    "dd-MM-yyyy hh:mm:ss", CultureInfo.InvariantCulture);

根据插入记录的方式,您应该能够使用 DateTime 对象,否则可以将其存储为字符串:

string sqlDate = parsedDate.ToString("yyyy-mm-dd hh:mm:ss:fff");
string dateString = "23-08-2011 01:33:01";            
string format = "dd-MM-yyyy hh:mm:ss";            
DateTime date = DateTime.ParseExact(dateString, format, CultureInfo.InvariantCulture);
string again = date.ToString("yyyy-MM-dd 00:00:00:000");