如何在sql server中设置年到日期的字符串

本文关键字:日期 字符串 设置 sql server | 更新日期: 2023-09-27 17:54:51

我有一个没有日历控件的文本框,我们将其称为出版年(我们在项目中使用diff名称)。出版年份为1999年、2001年或1860年。

我的舞步是这样的

我有datetime在我的数据库。(不可更改)

我使用c#和sql server 2005。

string date = textBox1.text;
Datetime dt = Convert.ToDateTime(date);

我使用动态sql

将dt传递给数据库

为了欺骗代码,我在输入日期之前添加了一个前缀1/1/,比如1/1/2010,它工作得很好

现在我的TL让我不要那样做....我是??。请帮助

如何在sql server中设置年到日期的字符串

听起来你真的应该:

  • 将文本解析为整数
  • 创建一个新的DateTime,使用该年份,并将1月1日作为日/月。
例如:

int year;
if (int.TryParse(textBox1.Text, out year))
{
    DateTime dt = new DateTime(year, 1, 1);
}
else
{
    // Handle input
}

注意,如果你只关心年份,那么我强烈建议数据库字段应该是Int而不是DateTime。

sql datetime的最小值是1/1/1753,原因有很多,您当然可以查询。然而,关键是一个常规的DateTime字段存储的信息比你关心的要多。

因此,如果您处理1753年以前的出版物,您将遇到架构问题。而且,如果你不这样做,你肯定会遇到问题,决定一份出版物是280年、279年还是281年……

您可以使用下拉列表显示可用的年份?如果只有三个可能的出版年份,那么这将更有意义作为输入控制。获取年份,并将DateTime月份和日期的值分别填充为"1"。