更改DataColumn DateTime格式?

时间:2013-07-01 20:19:33

标签: .net vb.net datatable

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

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

dd-Mon-yyyy

但我似乎无法为列分配格式。有没有办法为列分配一般格式,还是我必须遍历此循环中的每一行并分配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

谢谢!

2 个答案:

答案 0 :(得分:2)

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

例如:

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

How to format datetime & date

根据您对问题的评论:

  

我正在使用DataTable使用EPPlus打印出Excel工作簿。   我想要做的就是更改DateTime列中单元格的格式   在编写工作簿之前。截至目前,我只是做了一些错误   检查然后使用EPPlus将表写入工作簿   LoadFromDataTable方法。我不能只是循环通过表格   更改每个DateTime列中单元格的String格式?

是的,您可以使用EPPlus格式化通过LoaFromDataTable创建的工作表中的列,使用相应的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

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

答案 1 :(得分:2)

您提到为列分配格式 - 如果您使用DataGridView来显示数据,请参阅How to format DateTime columns in DataGridView?