我想循环遍历数据集并将所有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
?
谢谢!
答案 0 :(得分:2)
DateTime
没有隐式格式,只是DateTime
值。您可以将其格式化为string
,但它是另一种类型。
例如:
SELECT REPLACE(convert(varchar, YourDateColumn, 106), ' ', '-')
根据您对问题的评论:
我正在使用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?