Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/vb.net/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何检查SQLDataReader项是否为DateTime os字符串类型值?_Sql_Vb.net_Csv_Datareader - Fatal编程技术网

如何检查SQLDataReader项是否为DateTime os字符串类型值?

如何检查SQLDataReader项是否为DateTime os字符串类型值?,sql,vb.net,csv,datareader,Sql,Vb.net,Csv,Datareader,我有一个将datareader转换为CSV的函数。SQL返回YYYY-MM-DD HH:MM:SS.000,而.net将其转换为MM/DD/YYYY值。 我想检查datareader中的值是否为DateTime,并将其转换回YYYY-MM-DD HH:MM:SS.000格式 更新: 代码: 此函数用于将datareader转换为CSV流。在另一个函数中,我将此流转换为字符串并将其写入文件: File.WriteAllBytesoutboundFileFullPath,Encoding.ASCII

我有一个将datareader转换为CSV的函数。SQL返回YYYY-MM-DD HH:MM:SS.000,而.net将其转换为MM/DD/YYYY值。 我想检查datareader中的值是否为DateTime,并将其转换回YYYY-MM-DD HH:MM:SS.000格式

更新:

代码:

此函数用于将datareader转换为CSV流。在另一个函数中,我将此流转换为字符串并将其写入文件:

File.WriteAllBytesoutboundFileFullPath,Encoding.ASCII.GetBytesdata

希望这有助于理解我的问题

或者另一种方法是:将MemoryStream直接写入文件。我试过了,但没用。 谢谢

更新2 以下是我根据罗米尔的建议所做的:

   Dim dateValue As Date
                    If intcount <> m_Datareader.FieldCount - 1 Then
                        If (DateTime.TryParse(m_Datareader.Item(intcount).ToString(), dateValue)) Then
                            sw.Write(String.Format("""{0}"",", dateValue.ToString("yyyy-MM-dd")))
                        Else
                            sw.Write(String.Format("""{0}"",", m_Datareader.Item(intcount)))
                        End If
                    Else
                        sw.Write(String.Format("""{0}""", m_Datareader.Item(intcount)))
                    End If
使用DateTime.TryParse


您可以覆盖当前线程的默认区域性,以指定所需的默认日期时间格式:

    Dim c As CultureInfo = New CultureInfo(System.Threading.Thread.CurrentThread.CurrentCulture.Name)
    c.DateTimeFormat.ShortDatePattern = "yyyy-MM-dd"
    c.DateTimeFormat.LongTimePattern = "HH:mm:ss.fff"
    System.Threading.Thread.CurrentThread.CurrentCulture = c

分享你的研究成果对每个人都有帮助。告诉我们您尝试了什么,以及为什么它不能满足您的需求。这表明你已经花了时间尝试帮助自己,它避免了我们重复显而易见的答案,最重要的是它帮助你得到更具体和相关的答案!。NET不会将其转换为MM/DD/YYYY,尽管调用ToString后字符串表示形式可能类似于此。现在看看它现在是否真的是一个字符串,从哪里开始。参考。
string input = "2000-02-02";
    DateTime dateTime;
    if (DateTime.TryParse(input, out dateTime))
    {
        Console.WriteLine(dateTime);
    }
    Dim c As CultureInfo = New CultureInfo(System.Threading.Thread.CurrentThread.CurrentCulture.Name)
    c.DateTimeFormat.ShortDatePattern = "yyyy-MM-dd"
    c.DateTimeFormat.LongTimePattern = "HH:mm:ss.fff"
    System.Threading.Thread.CurrentThread.CurrentCulture = c