Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/71.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何更改SQL Server(2008)数据库的日期格式?_C#_Sql_Sql Server 2008 - Fatal编程技术网

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

C# 如何更改SQL Server(2008)数据库的日期格式?,c#,sql,sql-server-2008,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 = ne

对于通过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!");
}
private void btnAllocate\u单击(对象发送者,事件参数)
{
对于(int i=0;i

date-time piker(dtTmPkr)格式(dd/mm/yyyy)

在添加参数之前,尝试在c#中解析date-to-datetime对象

DateTime Dt = DateTime.ParseExact(dtTmPkr.Value, "dd/MM/yyyy", CultureInfo.InvariantCulture);
cmd.Parameters.AddWithValue("@currDate", Dt);
使用以下命令:

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

SQL Server不以任何字符串格式存储
DateTime
,而是存储为8字节的数值

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

SQL Server支持多种格式-请参阅

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

更新:如果使用问题中显示的查询将
DateTimePicker
中的值插入到SQL Server中,应该没问题-它插入了一个
DateTime
参数,这样日期的字符串格式就不会有任何问题

当需要将SQL Server中的
日期时间
转换为特定格式时,请使用

SELECT CONVERT(VARCHAR(50), YourDateColumn, 103)
这将以
dd/mm/yyyy
(英/法)格式为您提供日期。如果您需要不同的格式,请使用不同的样式(103以外的数字)。那些款式

如果将
DateTime
列读回C#并需要格式化,则使用

string formatted = YourDateTime.ToString("dd/MM/yyyy");

以获得所需的值。注意:要格式化月份,请使用
MM
(大写!),因为
MM
将格式化您的
日期时间
分钟

您在保存数据或检索数据时遇到问题?请尝试我上面的答案进行保存,并尝试以下链接(yyyy-MM-dd)进行检索是SQL server的本机数据格式。您可以使用此it更改(yyyy/mm/dd到yyyy/dd/mm)更改为任何特定格式。此更改不起作用。。。我想要(dd/mm/yyyy)@Bibhusame error(yyyy/dd/mm)和ur编码在103 plz正确后丢失(右括号)。@Bibhu..@Abhishek Kumar Ashu-查看此MSDN页面,103是dd/mm/yyyy的代码。+1答案最后一个代码块的注释:需要使用CultureInfo.InvariantCulture强制使用/as日期分隔符,否则,它将替换为当前区域性的实际日期分隔符(如果它不同)。