0

我想遍历数据集并将所有 DateTime 列的格式从 SQL Server 返回的默认格式mm/dd/yyyy hh:mm:ss tt(例如 2011 年 1 月 1 日下午 3:56:50)更改为dd-Mon-yyyy(例如 2011 年 1 月 1 日)。这可能吗?

我可以通过以下代码块访问数据集中每个表的数据表:

Using ds As DataSet = _bo.getHistoryDataSet(projectId)

    For Each dt As DataTable In ds.Tables

        For Each col As DataColumn In dt.Columns
            If col.DataType Is GetType(DateTime) Then
               //Format column here?
            End If
        Next
    Next

End Using

但我似乎无法为该列分配格式。有没有办法为列分配一般格式,还是我必须遍历此循环中的每一行并分配row(column) = row(column).ToString("Format Here")

谢谢!

4

2 回答 2

2

DateTime没有隐式格式,它只是一个DateTime值。您可以将其格式化为string但它是另一种类型。

例如:

SELECT REPLACE(convert(varchar, YourDateColumn, 106), ' ', '-')

如何格式化日期时间和日期

根据您对问题的评论:

我正在使用 DataTable 使用 EPPlus 打印出 Excel 工作簿。我要做的就是在写出工作簿之前更改 DateTime 列中单元格的格式。到目前为止,我只是在做一些错误检查,然后使用 EPPlus 的 LoadFromDataTable 方法将表写入工作簿。我不能只遍历表格并更改每个 DateTime 列中单元格的字符串格式吗?

是的,您可以格式化通过LoaFromDataTableEPPlus 创建的工作表中的列,使用适当的range.Style.Numberformat.Format

For Each col As DataColumn In tblExcel.Columns
    If col.DataType = GetType(Date) Then
        Dim colNumber = col.Ordinal + 1
        Dim range = workSheet.Column(colNumber) 
        range.Style.Numberformat.Format = "dd-Mon-yyyy" 
    End If
Next

但是,我更喜欢使用数据库,因为它更有效。

于 2013-07-01T20:30:51.090 回答
2

您提到为列分配格式 - 如果您使用 DataGridView 来可视化数据,请参阅如何在 DataGridView 中格式化 DateTime 列?

于 2013-07-01T20:36:03.430 回答