解析从sql server到c#的日期

时间:2014-02-19 01:47:04

标签: c# sql-server datetime

我需要一些解析日期的指导。我的数据库表包含值 ID(int)和日期(datetime:yyyy-mm-dd HH:mm:ss.fff格式)和状态 示例

1000 & 2014-02-18 20:32:20.657 & 1
2000 & 2014-02-18 20:32:20.658 & 1
3000 & NULL                    & -1

我有一个C#程序,它查看此表的status = 1和date not null,并希望在文本文件中以相同的格式插入ID和Date。 文本文件应该

1000    2014-02-18 20:32:20.657
2000    2014-02-18 20:32:20.658

这是代码。

using (SqlConnection connection = new SqlConnection(ConfigurationManager.ConnectionStrings["SQLConnectionString"].ConnectionString))
{
    connection.Open();
    SqlCommand cmdSel = new SqlCommand(sqlSelNew, connection);
    SqlDataReader reader1 = cmdSel.ExecuteReader();
    while (reader1.Read())
    {
      DataSet ds = GetData(sqlSelNew);
      CultureInfo _provider = CultureInfo.InvariantCulture;
       ID = Convert.ToInt32(reader1["ID"].ToString());
       string dtformat = @"yyyy/MM/dd HH:mm:ss.fff";
       var d = DateTime.ParseExact(dateresized,dtformat , _provider);
       using (StreamWriter sw = new StreamWriter(txtfilepath, true))
        {
            sw.BaseStream.Seek(0, SeekOrigin.End);
            sw.WriteLine(ID + "   " + d);
            sw.Flush();
            sw.Close();
        }

我得到“字符串未被识别为有效的DateTime”。错误。我怎么处理这个? 谢谢 Rashmi

1 个答案:

答案 0 :(得分:4)

首先,您不必解析日期。您应该只需使用reader.GetDateTime()来读取该列并进行分配即可。其次,为什么要填写DataSet并使用SqlDataReader直接获取值?我期待一个或另一个,但不是两个。第三,你应该在实施using时将你的读者包装在IDisposable声明中。

using (var reader1 = cmdSel.ExecuteReader())
{
    while (reader1.Read())
    {
       var id = reader1.GetInt32(0);
       var date = reader1.GetDateTime(1);

       ...
    }
}