0

mm/dd/yyyy hh:mm:ss ttデータ セットをループして、すべての DateTime 列の形式を SQL Server によって返される既定の形式(例: 1/1/2011 3:56:50 PM) からdd-Mon-yyyy(例: 01-Jan-2011)に変更したいと考えています。これは可能ですか?

次のコード ブロックを使用して、データセット内の各テーブルのデータ テーブルにアクセスできます。

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), ' ', '-')

日時と日付をフォーマットする方法

あなたの質問に対するあなたのコメントから:

EPPlus を使用して Excel ワークブックを印刷するために DataTable を使用しています。ワークブックを書き出す前に、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 に答える