节省数据库的时间,然后是日期

时间:2013-09-21 09:04:40

标签: c# winforms ms-access datagridview

我只想将“TIME”保存到数据库中。

但是,我得到的是“时间”,接着是“日期”

以下是我将数据库添加到数据库文件后程序中的数据库截图:

enter image description here

如果您在“时间”列中看到日期后面的时间。我不想那样的地方(我只想要“时代”专栏中显示的时间)。

此外,我已经将数据库文件中“Times”的格式设置为“Medium Time”,这将给我“4:56 PM”。

以下是数据库中时间的屏幕截图:

enter image description here

数据库文件中的时间是正确的,因为它只显示了时间。但是,在我使用datagridview显示数据库的程序中,它显示了日期之后的时间。

如何更改它以便我只能看到时间?

以下是代码:

    private void AddDatabase(object sender, EventArgs e)
    {
        using (OleDbConnection conn = new OleDbConnection(connectionString))
        {
            string query = "INSERT INTO [Record] ([Times]) VALUES (@Times)";

            conn.Open();

            using (OleDbCommand cmd = new OleDbCommand(query, conn))
            {
                    _cmd.Parameters.Add("@Times", System.Data.OleDb.OleDbType.DBTimeStamp);
                    _cmd.Parameters["@Times"].Value = DateTime.Now.ToShortTimeString();

                    int _numberOfRows = _cmd.ExecuteNonQuery();
                }

                if (_choice.comboBox1.Text == "English")
                {
                    System.Media.SoundPlayer _sound = new System.Media.SoundPlayer(@"C:\Windows\Media\Windows Exclamation.wav");
                    _sound.Play();

                    DialogResult _dialogResult = MessageBox.Show("Added Successfully!", "Success", MessageBoxButtons.OK);

                    if (_dialogResult == DialogResult.OK)
                    {
                        ViewDatabase(sender, e);

                        ClearTextBoxes(sender, e);
                    }
                }
            }

            conn.Close();
        }
    }

基本上,我如何将数据库文件中的“格式”用于代码?

3 个答案:

答案 0 :(得分:0)

您可以使用DateTime.ToString(formatString)方法根据需要格式化日期时间。 然后你可以在数据网格中显示结果字符串或任何你想要的。

var dtTime =(DateTime) dataReader["Times"];
var strTime = datTime.ToString("hh:mm tt");

答案 1 :(得分:0)

SQL SERVER 2008+有一个TIME数据类型,你可以用它来存储时间,你可以看看这个article在.Net应用程序中使用它,只是一个提示,你可以在.Net中使用TimeSpan数据类型

答案 2 :(得分:0)

您可以将时间存储为午夜的秒数,例如在您的情况下:

您将在数据库中归档的Times定义为int,并

_cmd.Parameters.Add("@Times", System.Data.OleDb.OleDbType.Integer);
_cmd.Parameters["@Times"].Value = (int)DateTime.Now.TimeOfDay.TotalSeconds;

从数据库读取后,您可以将秒数转换为时间

int soconds = reader["Times"];
string time = string.Format("{0:00}:{1:00}:{2:00}",seconds/3600,seconds/60,seconds%60);

时间是您在文本框或网格等中显示的所需格式。