C# 从c在sql表中只插入时间#

C# 从c在sql表中只插入时间#,c#,sql,sql-server,datetime,C#,Sql,Sql Server,Datetime,我有一个windows应用程序,其中我使用日期时间选择器来选择轮班开始和轮班结束。我必须把这些时间插入表中。我的代码是: if (comboBox1.SelectedIndex == 0 || comboBox1.SelectedIndex == 1 || comboBox1.SelectedIndex == 2 || comboBox1.SelectedIndex == 3 || comboBox1.SelectedIndex == 4 || comboBox1.SelectedIndex =

我有一个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(我不需要班次开始和班次结束中的日期,只需要时间)。非常感谢您的帮助。请…

确保您对数据列使用了适当的SQL Server类型。

确保您对数据列使用了适当的SQL Server类型。

请尝试此操作

CONVERT(VARCHAR(8),'" + this.SS.Text + "',108)
108返回
hh:mm:ss

试试这个

CONVERT(VARCHAR(8),'" + this.SS.Text + "',108)
cast( '" + this.SS.Text + "' as time)
108返回
hh:mm:ss

cast( '" + this.SS.Text + "' as time)

在查询中使用datetimepicker值之前,只需进行如下转换

DateTimePicker1.Value.toSortTimeString
DateTimePicker1.Value.tostring(“HH:mm:ss”)

在查询中使用datetimepicker值之前,只需进行如下转换


DateTimePicker1.Value.ToSortTimeString
DateTimePicker1.Value.tostring(“HH:mm:ss”)
如果您使用的是SQL Server 2008或更高版本,则可以使用
TIME
数据类型来存储时间。如果您使用的是早期版本,那么最好的选择是
DATETIME
datatime,它有一个可以忽略的日期组件。任何消耗数据的东西都可以将其显示为时间,而不考虑日期


另一种选择是将时间存储为字符串,但如果您需要进行任何比较或日期计算,则可能会遇到更多麻烦。

如果您使用的是SQL Server 2008或更高版本,则可以使用
时间
数据类型仅存储时间。如果您使用的是早期版本,那么最好的选择是
DATETIME
datatime,它有一个可以忽略的日期组件。任何消耗数据的东西都可以将其显示为时间,而不考虑日期



另一个选择是将时间存储为一个字符串,但是如果你需要做任何比较或日期数学,它可能比它值钱的麻烦。

你用什么数据类型来存储基础的CopyRealsTABLE中的时间?还有一点偏离主题,但是我建议你考虑使用Sql命令和参数表,以参数化查询。除了避免SQL注入之外,您还可以为注释字段中的单引号或客户端计算机与SQL之间的日期/时间格式不匹配等问题省去各种麻烦。您使用什么数据类型将时间存储在基础的Cau reports表中?还有,有点离题,但我建议您考虑使用Sql命令和参数化参数来对查询进行参数化。除了避免SQL注入之外,您还可以避免因注释字段中的单引号或客户端计算机与SQL之间的日期/时间格式不匹配等问题而产生的各种麻烦。我在SQL中输入了datetime,在windows应用程序表单中,我有格式为time的日期时间选择器,因此,我有时间使用它们。。CONVERT(VARCHAR(5),“+this.SS.Text+”,108)=对于shift start,给我这个o/p 01/01/1900 16:36@kiranv:如果SQL Server表中有
DATETIME
,则始终有日期和时间。你无法避免。如果您只需要时间,请使用适当的数据类型-
time(3)
或类似的数据类型!嗨,马克,你说得对。。但是sql server managament studio没有时间数据类型,这是我首先要寻找的。我在sql中有日期时间类型,在windows应用程序表单中有格式为时间的日期时间选择器,因此,我有时间使用它们。。CONVERT(VARCHAR(5),“+this.SS.Text+”,108)=对于shift start,给我这个o/p 01/01/1900 16:36@kiranv:如果SQL Server表中有
DATETIME
,则始终有日期和时间。你无法避免。如果您只需要时间,请使用适当的数据类型-
time(3)
或类似的数据类型!嗨,马克,你说得对。。但是sql server managament studio没有时间数据类型,这是我首先要查找的。在查询中使用datetimepicker值之前,您是否尝试过更改它。请查看我的更新。有人知道我的查询有什么问题吗?在查询中使用datetimepicker值之前,您是否尝试过更改它。请查看我的更新。有人知道我的查询有什么问题吗?我看不到时间数据类型,除了(时间戳),这与我的情况无关。我使用datetime,试图忽略日期,只是显示时间,但我很难显示它。我尝试了几种方法,但仍然没有运气。我看不到时间数据类型,除了(时间戳)这与我的情况无关,我使用datetime,我试图忽略日期,只是显示时间,但我很难显示它。我尝试了几种方法,但仍然没有运气。
CONVERT(TIME,'" + this.SS.Text + "')