我们如何更改SQL Server(2008)数据库的日期格式?

时间:2013-09-07 06:52:47

标签: c# sql sql-server-2008

对于通过win表单保存的数据,输入日期格式为(dd / mm / yyyy)。数据库显示(yyyy-mm-dd)格式。如何更改日期格式?

private void btnAllocate_Click(object sender, EventArgs e)
        {

            for (int i = 0; i < dgvDetails.Rows.Count; i++)
            {
                SqlConnection con = new SqlConnection("server=HP-HP; database=Restaurent; user id=sa; password=sql2008");
                SqlCommand cmd = new SqlCommand("INSERT INTO WtrTblAllot (WtrNm,Type,No,currDate) values (@WtrNm,@Type,@No,@currDate)", con);
                cmd.Parameters.AddWithValue("@WtrNm", dgvDetails.Rows[i].Cells[0].Value);
                cmd.Parameters.AddWithValue("@Type", dgvDetails.Rows[i].Cells[1].Value);
                cmd.Parameters.AddWithValue("@No", dgvDetails.Rows[i].Cells[2].Value);
                cmd.Parameters.AddWithValue("@currDate", dtTmPkr.Value);
                con.Open();
                cmd.ExecuteNonQuery();
                cmd = null;
              }
        MessageBox.Show("Added successfully!");
}

日期时间piker(dtTmPkr)格式(dd / mm / yyyy)

3 个答案:

答案 0 :(得分:4)

SQL Server不以任何字符串格式存储DateTime - 它存储为8字节数值。

各种设置(语言,日期格式)仅影响SQL Server Management Studio中向您显示DateTime的方式 - 或者当您尝试将字符串转换为DateTime时如何解析它。

SQL Server支持多种格式 - 请参阅MSDN Books Online on CAST and CONVERT

实际上,它不是要更改SQL Server中的日期格式 - 它是关于如何格式化并显示从SQL Server检索的Datetime。使用适当的T-SQL CONVERT参数,或格式化C#前端代码中的DateTime

更新:如果您使用问题中显示的查询将DateTimePicker中的值插入SQL Server,那么您应该没问题 - 它正在插入{{1}参数,这样你就不会对日期的字符串格式有任何问题。

当您需要将SQL Server中的DateTime转换为特定格式时 - 请使用

DATETIME

这将以SELECT CONVERT(VARCHAR(50), YourDateColumn, 103) (英国/法国)格式为您提供日期。如果您需要不同的格式 - 使用不同的样式(其他数字不是103)。那些样式are very well documented here

如果您将dd/mm/yyyy列读回C#并需要格式化,请使用

DateTime

获取您需要的值。注意:要格式化,请使用string formatted = YourDateTime.ToString("dd/MM/yyyy"); (大写!),因为MM会格式化mm分钟代替。

答案 1 :(得分:0)

尝试在添加参数之前解析c#中的Date to datetime对象。

DateTime Dt = DateTime.ParseExact(dtTmPkr.Value, "dd/MM/yyyy", CultureInfo.InvariantCulture);
cmd.Parameters.AddWithValue("@currDate", Dt);

答案 2 :(得分:-1)

使用此:

SqlCommand cmd = new SqlCommand("INSERT INTO WtrTblAllot (WtrNm,Type,No,currDate) values (@WtrNm,@Type,@No,CONVERT(CHAR(10), @currDate, 103))", con);