1

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

但是,我得到的是“时间”,然后是“日期”

这是我将数据库添加到数据库文件后在程序中的屏幕截图:

在此处输入图像描述

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

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

这是数据库中时间的截图:

在此处输入图像描述

数据库文件中的时间是正确的,因为它只显示时间。但是,在我使用 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();
        }
    }

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

4

3 回答 3

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);

time 是您希望在文本框或网格等中显示的格式。

于 2013-09-22T11:40:29.723 回答
0

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

var dtTime =(DateTime) dataReader["Times"];
var strTime = datTime.ToString("hh:mm tt");
于 2013-09-21T09:59:06.143 回答
0

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

于 2013-09-22T05:34:47.433 回答