【问题标题】:Convert Datatable's date-type column to short date on output - VB.Net将 Datatable 的日期类型列转换为输出的短日期 - VB.Net
【发布时间】:2012-10-04 16:40:03
【问题描述】:

请各位高手帮忙...

我有一个数据表,我从具有数万条记录的 SQL Server 数据库中加载数据,并且我有一个将整个数据表输出到分隔文本文件的过程。

我的程序代码如下:

For Each dtRow As DataRow In dtToWrite.Rows
     File.WriteLine(String.Join(strDelimitter, dtRow.ItemArray.Select(Function(Field) Field.ToString)))
Next 

基本上使用 string.join 函数从我的数据表中的每个数据行创建一个分隔字符串。

现在,我的问题是我从 SQL Server 中提取日期值,因此对于日期列,最终输出的值如下所示:

“2012 年 9 月 30 日上午 12:00:00”

而我只希望它显示:

“2012 年 9 月 30 日”

让我的数据仅输出数据表中的日期部分的最佳方法是什么?

谢谢!

【问题讨论】:

    标签: .net vb.net datatable


    【解决方案1】:

    在您的 SQL 查询中,您可以将 DateTime 转换为预先格式化的字符串。像这样:

    SELECT convert(varchar, getdate(), 101)
    

    更多日期格式,请查看MSDN list of formats

    【讨论】:

    • 这太棒了 - 我仍然想知道我是否可以在代码中做到这一点,但这绝对有效!!!
    【解决方案2】:

    您不能像tgolisch 状态那样在查询中返回日期的时间部分,或者只在字符串上使用.Split()

    Dim dateOnly As String = yourString.Split(" ")(0);
    

    【讨论】:

    • ...挑战在于我写入文本文件的方式并没有真正逐个字段...我知道我可以用 if 语句做一些事情在我的 Select(Function(Field) Field.ToString) 中,但我希望有一种更简洁的方式......
    【解决方案3】:
    File.WriteLine(String.Join(strDelimitter, dtRow.ItemArray.Select(Function(Field) DateTime.Parse(Field.ToString).ToShortDateString())))
    

    将值转换为 DateTime,然后调用其 .ToShortDateString() 方法。这将取决于文化。

    【讨论】:

    • ...这假设所有字段都是日期字段...我知道我可以放入一个 IF 子句,但我希望有更好的方法...
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-12-07
    • 1970-01-01
    • 2020-05-16
    • 1970-01-01
    • 2012-10-28
    相关资源
    最近更新 更多