如何在数据库中插入当前日期,月份和年份

时间:2018-11-19 09:36:56

标签: c#

我要在数据库中插入当前的daymonthyearformat必须为:YYYY-MM-DD。这该怎么做?我在表中使用数据类型'date'。它必须与数据库中的值相同。我使用C#。

现在我得到了错误:“将数据类型nvarchar转换为日期时出错”

代码:

string datenow = DateTime.Now.ToString("yyyy-mm-dd");

我使用存储过程来添加日期值(和其他一些东西):

conn.Open();
                SqlCommand cmd = new SqlCommand("spAddContentment", conn);
                cmd.CommandType = CommandType.StoredProcedure;
                cmd.Parameters.Add("@question", SqlDbType.VarChar, 220);
                cmd.Parameters.AddWithValue("@employeeid", Variabels.employeeid);
                cmd.Parameters.AddWithValue("@score", SqlDbType.Char).Value = score;
                cmd.Parameters.AddWithValue("@comment", SqlDbType.VarChar).Value = TextBxComment.Text;
                cmd.Parameters.AddWithValue("@date", SqlDbType.Date).Value = datenow;
                cmd.ExecuteNonQuery();

2 个答案:

答案 0 :(得分:5)

替换

cmd.Parameters.AddWithValue("@date", SqlDbType.Date).Value = datenow;

使用

cmd.Parameters.AddWithValue("@date", SqlDbType.Date).Value = DateTime.Now;

  

现在我得到了错误:“将数据类型nvarchar转换为日期时出错”

表示您尝试插入字符串,但是该过程需要一个日期。 如果要跳过时间部分,可以使用DateTime.Now.DateDateTime.Today

答案 1 :(得分:1)

  

格式必须为:YYYY-MM-DD

不!!

此处的日期应存储为类型化的值-可能是类型date(无时间部分)或datetime。现在;就是这样:日期值没有格式。它实际上只是一个数字。甚至问“将int存储为什么(文本)格式也将是不正确的”,甚至问“我的日期存储为什么(文本)格式”根本是不正确的。很简单:不是,因为它不是文本。

如果您将日期(或整数)存储为文本(例如,在某种[n][var]char(...)列中):这是一个问题,并且可能导致巨大的混乱和问题,效率低下-包括排序,过滤问题和i18n / l10n问题。

相反:将列声明为datedatetime,并使用.NET中的键入值填充它,例如,将SQL参数传递为.NET {{ 1}}。 ADO.NET DateTime层知道如何连接这些东西,所有正确的魔术都会发生。

仅当您以某种方式实际显示日期时,询问格式才正确。例如,完全正确地提出以下要求:

  

我有一个从数据库中获得的SqlClient值;我应该在网页中使用哪种显示格式来显示它?

重要的一点是:现在,这是一个 display 关注,而不是 storage 关注。