0

mysqlから日付値を引き出し、ローカルで使用される形式で表示しています。下記参照:

私はこの日時の値を持っています2012-11-01 08:00:00...yyyy-MM-ddHH:mm:ss

これを次のように表示する必要があり01-11-2012 08:00:00ます...dd-MM-yyyyHH:mm:ss

私はこれを次のように簡単に行うことができます:

Dim dr As MySqlDataReader = cmd.ExecuteReader(sql)

If dr.Read()
    Dim mydate As DateTime = dr("date_column")

    txtDate.Text = mydate.ToString("dd-MM-yyyy") & " " & mydate.ToString("HH:mm:ss")
End If

これは十分に機能しますが、私の問題は、このテキストボックスからレコードを更新する場合、mysqlがエラー(オブジェクトが範囲外など)について文句を言うため、日付にこの形式を使用できないことです。

だから私が今する必要があるのはこれをyyyy-MM-ddに戻すことです。ここでの難しさは、.NETが自動的に私ddの値をMM値と見なし、その逆も同様であるということです。

01-11-2012これにより、データベースにのように書き込む値が得られます11-01-2012

ここで使用されている日付の整合性を維持しながら、データベースへの挿入/更新の日付を再フォーマットするにはどうすればよいですか?

前もって感謝します

4

3 に答える 3

3

新しい文字列をDateオブジェクトに変換し直すために使用DateTime.Parseします。その後、を使用してMySQLに挿入し直すことができます。ToString("yyyy-MM-dd hh:mm:ss")

DateTime.ParseExactを使用して日付オブジェクトを作成し、次のように文字列で日付オブジェクトをどのようにフォーマットするかを正確に指定することもできます。

Imports System.Globalization

Dim myNewDate As DateTime
myNewDate = DateTime.ParseExact("23-05-2012 15:45:35", "dd-MM-yyyy HH:mm:ss", CultureInfo.InvariantCulture)

//InsertIntoMySQL is whetever method you use to insert into MySQL
InsertIntoMySQL("yyyy-MM-dd HH:mm:ss")
于 2012-10-02T12:04:14.757 に答える
3

更新にはパラメーター化された クエリを使用します。

query = "UPDATE SomeTable SET date_column = @newDate WHERE record_id = @record_id"
conn = new SqlConnection("my connection string")

cmd = new SqlCommand(query, conn)
cmd.Parameters.Add("newDate", SqlDbType.DateTime).Value = new Date(txtDate.Text)
cmd.Parameters.Add("record_id", SqlDbType.Int).Value = record_id

'Rest of code to execute cmd

それでもTextBoxの日付が正しく解析されない場合は、事前に次のように解析してください。

Date.ParseExact(txtDate.Text, "dd-MM-yyyy HH:mm:ss", CultureInfo.InvariantCulture)

また、行:

txtDate.Text = mydate.ToString("dd-MM-yyyy") & " " & mydate.ToString("HH:mm:ss")

次のように書くこともできます:

txtDate.Text = mydate.ToString("dd-MM-yyyy HH:mm:ss")

読みやすいかもしれません。

于 2012-10-02T12:11:13.757 に答える
2

テキストボックス内のテキストをDateTimeタイプに変換してから、MySql標準としてフォーマットしてみてください。次に、その文字列を挿入ステートメントと更新ステートメントで使用します。

Convert.ToDateTime(textBox.Text).ToString("yyyy-MM-dd") 
于 2012-10-02T12:32:05.493 に答える