如何在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让我不要那样做....我是??。请帮助
听起来你真的应该:
- 将文本解析为整数
- 创建一个新的
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"。