0

DateTimePickerを使用して日付を選択し、TextBoxを使用して時刻を選択しています。

両方の値をテーブルに挿入しようとしていますが、機能しません

INSERT INTO dt (date) VALUES('" & DateTimePicker1.Text  & TextBox1.Text & "');

date列はタイプdatetimeです。

コードはこのエラーを示しています:文字列から日時を変換するときに変換に失敗しました

4

3 に答える 3

1

表現の文化的な違いのために、データベースに文字列として日時を渡すことは本当に望ましくありません。代わりに、パラメーターを使用して日時タイプを渡すことができます。SQL Serverの場合、次のようなものが必要です。

Dim dt As DateTime
dt = DateTimePicker1.Value.Date ' use only the date portion '
Dim tim As DateTime
If DateTime.TryParse(TextBox1.Text, tim) Then
    dt = dt + tim.TimeOfDay ' use only the time portion '
Else
    MsgBox("Could not understand the value in the time box. Using midnight.")
End If

Dim sql As String = "INSERT INTO dt (date) VALUES (@DateTime)"

Dim sqlCmd As New SqlCommand(sql, sqlConn)
sqlCmd.Parameters.Add(New SqlParameter With {.ParameterName = "@DateTime", .SqlDbType = SqlDbType.DateTime, .Value = dt})
'TODO: ExecuteNonQuery
于 2012-12-01T20:05:05.390 に答える
0

2つのテキストボックスのテキストの間にスペースが必要です。

insert into dt (date) values('" & DateTimePicker1.Text & " " & TextBox1.Text & "')
于 2012-12-01T17:46:29.563 に答える
0

特定のカルチャをデータベースに正しく挿入するには、日付をフォーマットする必要があります。または、などのカルチャーニュートラルな文字列を使用しdd-MMM-yyyyます。

最初のステップは、からDateTimeを作成するDateTimePicker1.Textことです-ParseExactTextBox1.Textを使用できます。次に、DateTimeを次のようにフォーマットします-より標準的なフォーマットについては、MSDNのこの記事を確認してください:標準の日付と時刻のフォーマット文字列.ToString("G")

同様の問題がここで説明されています。

于 2012-12-01T18:54:56.373 に答える