我有一个Windows应用程序,其中我使用了日期时间选择器用于班次开始和班次结束。我必须将这些时间插入表中。我的代码是:
if (comboBox1.SelectedIndex == 0 || comboBox1.SelectedIndex == 1 || comboBox1.SelectedIndex == 2 || comboBox1.SelectedIndex == 3 || comboBox1.SelectedIndex == 4 || comboBox1.SelectedIndex == 5 || comboBox1.SelectedIndex == 6 || comboBox1.SelectedIndex == 7 || comboBox1.SelectedIndex == 8 || comboBox1.SelectedIndex == 9 || comboBox1.SelectedIndex == 10 || comboBox1.SelectedIndex == 11 || comboBox1.SelectedIndex == 12 || comboBox1.SelectedIndex == 13 || comboBox1.SelectedIndex == 14 || comboBox1.SelectedIndex == 15 || comboBox1.SelectedIndex == 16)
{
string Query = " Insert into [ICPS].[dbo].[Cau reports]( [Name],[Date],[Shift Start],[Shift END ],[Overtime Start],[Overtime End],[Tasks Carried Out],[Normal ],[Overtime],[Normal 1],[Overtime1],[Comments],[Targets_(per hour)]) values ('" + this.textBox1.Text + "','" + this.Date.Text + "', CONVERT(VARCHAR(5),'" + this.SS.Text + "',108), '" + this.SE.Text + "','" + this.OS.Text + "','" + this.OE.Text + "','" + this.comboBox1.SelectedText + "','" + this.NT.Text + "','" + this.OT.Text + "','" + this.textBox2.Text + "','" + this.textBox3.Text + "','" + this.textBox4.Text + "','" + this.textBox5.Text + "' ) ;";
// string Query = " update [ICPS].[dbo].[Cau reports] set [Normal]='" + this.textBox7.Text + "',[Overtime]='" + this.textBox8.Text + "',[Normal 1]='" + this.textBox2.Text + "',[Overtime1]='" + this.textBox3.Text + "',[comments]='" + this.textBox4.Text + "',[Targets_(per hour)]='" + this.textBox5.Text + "'where [Tasks Carried Out] ='" + this.comboBox1.SelectedText + "'; ";
SqlConnection conDatabase = new SqlConnection(constring);
SqlCommand cmdDataBase = new SqlCommand(Query, conDatabase);
SqlDataReader myReader;
try
{
conDatabase.Open();
myReader = cmdDataBase.ExecuteReader();
MessageBox.Show("Saved");
while (myReader.Read())
{
}
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
}
但是我的输出来了:01/01/1900 16:36(我不需要在轮班开始和轮班结束时只有时间)。非常感谢你的帮助。请...
答案 0 :(得分:3)
确保为数据列使用适当的SQL Server time类型。
答案 1 :(得分:0)
试试这个
CONVERT(VARCHAR(8),'" + this.SS.Text + "',108)
108返回hh:mm:ss
答案 2 :(得分:0)
cast( '" + this.SS.Text + "' as time)
或
convert(char(5), '" + this.SS.Text + "', 108)
或
CONVERT(VARCHAR(8),'" + this.SS.Text + "',108)
或
CONVERT(TIME,'" + this.SS.Text + "')
OR
只需转换datetimepicker值,然后在查询中使用它,如下所示
DateTimePicker1.Value.ToShortTimeString
或DateTimePicker1.Value.tostring("HH:mm:ss")
答案 3 :(得分:0)
如果您使用的是SQL Server 2008或更高版本,则可以使用TIME
数据类型来存储一段时间。如果您使用的是早期版本 - 您最好的选择是DATETIME
数据时间,它将具有您可以忽略的日期组件。无论使用,您的数据始终只能将其显示为时间并忽略日期。
另一个选择是将时间存储为字符串,但如果你需要进行任何比较或数学日期,那么它可能比它的价值更麻烦。