【发布时间】:2017-06-05 11:56:19
【问题描述】:
我正在创建一个 C# ASP 页面,该页面获取用户在文本框中设置的日期(日期是使用日历对象选择的,然后发送到文本框)并将它们保存到 SQL 服务器。输入日期后,它将它们存储在 MM-DD-YYYY 而不是 DD-MM-YYYY 中。这显然会产生错误!谁能帮我获取日期以我想要的格式存储它们?
protected void Page_Load(object sender, EventArgs e)
{
if (!Page.IsPostBack)
{
DateTime today = DateTime.Now;
DateTime sevenDays = today.AddDays(7);
btnDelete.Enabled = false;
txtStart.Text = today.ToShortDateString();
txtEnd.Text = sevenDays.ToShortDateString();
}
updateGrid();
}
protected void btnSave_Click(object sender, EventArgs e)
{
if (sqlCon.State == System.Data.ConnectionState.Closed)
sqlCon.Open();
SqlCommand sqlCmd = new SqlCommand("MessageUpdateOrCreate", sqlCon);
sqlCmd.CommandType = System.Data.CommandType.StoredProcedure;
sqlCmd.Parameters.AddWithValue("@MessageID", (hfMessageID.Value == "" ? 0 : Convert.ToInt32(hfMessageID.Value)));
sqlCmd.Parameters.AddWithValue("@Sender", txtSender.Text.Trim());
sqlCmd.Parameters.AddWithValue("@Receiver", txtReceiver.Text.Trim());
sqlCmd.Parameters.AddWithValue("@Message", txtMessage.Text.Trim());
sqlCmd.Parameters.AddWithValue("@Yeargroup", ddYear.Text.Trim());
sqlCmd.Parameters.AddWithValue("@Title", txtTitle.Text.Trim());
sqlCmd.Parameters.AddWithValue("@Date", txtStart.Text.Trim());
sqlCmd.Parameters.AddWithValue("@Expiry", txtEnd.Text.Trim());
sqlCmd.ExecuteNonQuery();
sqlCon.Close();
string messageID = hfMessageID.Value;
clear();
if (messageID == "")
lblSuccess.Text = "New message Success";
else
lblSuccess.Text = "Updated Success";
updateGrid();
}
【问题讨论】:
-
SQL Server 中的字段数据类型是什么?
-
如果您的字段类型是日期,那么您不会将它们存储为 MM-DD-YYYY 或 DD-MM-YYYY 格式,而是将它们存储为内部二进制(数字)格式。 MM-DD-YYYY 或 DD-MM-YYYY 格式在您呈现数据时由您的应用程序(您的数据组件配置)应用。
-
您应该查看Can we stop using AddWithValue() already? 并停止使用
.AddWithValue()- 它可能会导致意想不到和令人惊讶的结果...
标签: c# asp.net sql-server date