【问题标题】:What datatype should I save for hh:mm tt in SQL Server我应该为 SQL Server 中的 hh:mm tt 保存什么数据类型
【发布时间】:2014-09-28 07:35:50
【问题描述】:

我有一个 web 表单,它有一个带有 hh:mm tt 的下拉列表,间隔 30 分钟,从早上 6:00、早上 6:30、早上 7:00....8:00 开始。如何将选定的时间保存到 SQL Server?我不确定我应该在 SQL Server 中使用什么数据类型(DateDateTimeTime(7))。

请帮我指教。

这是我要加载的 C# 代码

protected void Page_Load(object sender, EventArgs e)
{
    AddDropDownValues(ref ddlHrMin, 6, 20, 30);
}

这就是我定义出来的方式 hh:mm tt

 private void AddDropDownValues(ref DropDownList ddlHrMin, int startHour, int endHour, int increment)
{
    DateTime now = DateTime.Now;
    DateTime startTime = new DateTime(now.Year, now.Month, now.Day, startHour, 0, 0);
    DateTime endTime = new DateTime(now.Year, now.Month, now.Day, endHour, 0, 0);

    while (startTime <= endTime)
    {
        ddlHrMin.Items.Add(startTime.ToShortTimeString());
        startTime = startTime.AddMinutes(increment);
    }
}

【问题讨论】:

  • 日期时间。真的不应该对此进行辩论或思考。如果您存储日期时间数据,请将其放入日期时间数据类型。
  • 如果选择的数据是早上 6:30,它将如何保存在表格中?
  • 如果您使用的是较新版本的 sql,您可以使用 time 数据类型。 select cast(getdate() as time)
  • 我几乎总是使用 unix 时间戳。我取一个 int(11)。易于分类...占用空间很小..我没有理由不能使用它。显示时格式化日期...

标签: c# sql sql-server date datetime


【解决方案1】:

这里有几个选项。一种是内置的Time 类型。这是首选类型,但与客户端代码一起使用可能会很尴尬。它也不适用于 Sql Server 2005 和更早版本。由于您使用的是 30 分钟间隔,另一个选项是 int,表示自午夜以来的间隔数,或自午夜以来的分钟数。这里的诀窍是您必须编写代码来转换输入和输出。您也可以使用 DateTime,但如果您不查看特定日期并且只关心时间部分,这可能会有点过大。

您绝对要避免的一件事是将这些数据存储为字符串。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-05-01
    • 2010-09-09
    • 2011-04-23
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多