Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/334.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的连接中设置日期格式?_C#_Sql_Sql Server_Datetime - Fatal编程技术网

C# 如何在与SQL的连接中设置日期格式?

C# 如何在与SQL的连接中设置日期格式?,c#,sql,sql-server,datetime,C#,Sql,Sql Server,Datetime,在Microsoft SQL Server Management Studio中,调用存储过程后,我可以看到时间的格式为表中的2011-05-20 19:56:09 然而,在我的C#程序中,在使用OdbcConnection从表中获取记录后,我发现时间的格式是05/20/2011 19:56:09。因此,我手动将格式MM/DD/yyyyy hh:MM:ss转换为YYYY-MM-DD hh:MM:ss(实际上,由于显示的时间是19小时,我如何验证格式是否为h或hh) 我的问题是为什么以及在连接的哪

在Microsoft SQL Server Management Studio中,调用存储过程后,我可以看到时间的格式为表中的
2011-05-20 19:56:09

然而,在我的C#程序中,在使用
OdbcConnection
从表中获取记录后,我发现时间的格式是
05/20/2011 19:56:09
。因此,我手动将格式
MM/DD/yyyyy hh:MM:ss
转换为
YYYY-MM-DD hh:MM:ss
(实际上,由于显示的时间是19小时,我如何验证格式是否为
h
hh

我的问题是为什么以及在连接的哪一部分,格式发生了变化?如何在连接中设置不变性文化

cmd = new OdbcCommand("{?=CALL stored_procedure_in_SQL(?,?)}", m_SqlConn);
cmd.Parameters.Add(new OdbcParameter("RETURN_VALUE", OdbcType.Int, 4,
    ParameterDirection.ReturnValue, false, 0, 0, null, 
    DataRowVersion.Default, null));

//@parameter1
cmd.Parameters.Add("@parameter1", OdbcType.VarChar, 50).Value = value1;

//@parameter2
cmd.Parameters.Add("@parameter2", OdbcType.Int)=value2;

object objTime=ds.Tables[0].Rows[0][0]
Console.WriteLine(objTime.Tostring()) //05/20/2011 19:56:09
DateTime dateTime = Cdate(objTime, "MM/dd/yyyy h:mm:ss tt"); 
//2011-05-20 19:56:09 
Console.WriteLine(dateTime.ToString("yyyy-MM-dd HH:mm:ss")); 

//Function Cdate
static public DateTime Cdate(object val, string format)
{
    // check if the object is a date time alread
    string str;
    if(val is DateTime)
    {
        // Since val is already a dateTime,Return here
        return (DateTime)val; 
    }

    // convert via string
    if(val != DBNull.Value)
    {
        str = val.ToString().Trim();
    }
    else
    {
        str = "";
    }

    if(str == "")
    {
        return DateTime.MinValue;
    }
    else
    {
        return DateTime.ParseExact(str, format, 
            CultureInfo.InvariantCulture);
    }
}

不能对连接字符串设置
DateTime
格式

您看到的只是
DateTime
的某种(内部)表示形式的不同格式

格式由您使用的工具和.NET代码的区域性决定

当您想要显示时间时,则需要格式化,尽管在使用像您这样的自定义格式字符串时,不涉及
CultureInfo
元素


检查
DateTime

上的不同重载。您不能在connectionstring中设置dateformat,但可以在查询批处理中调用
set-dateformat DMY

我怀疑该值在数据库中是否有格式。在这一点上(处理C#
DateTime
,但这里可能会应用相同的逻辑)。在
CDate
方法中,返回的
太多了。您能告诉我们在您的案例中执行哪一个吗?@Snowbear,第一个返回是在我的程序中执行的,因为注释addedA
DateTime
是一个
DateTime
是一个
DateTime
-它没有格式-它只是一个
DateTime
。您看到的是
DateTime
的字符串表示形式-您可以选择如何格式化
DateTime
,但这是基于逐个查询的方式,或者作为数据库中的设置-这不是您可以在连接字符串+1中设置/更改的内容-SQL Server中的
DateTime
只是一个
DateTime
-并且没有与之关联的“格式”。如果我理解正确,因为我的格式是yyyy-MM-dd HH:MM:ss,它与任何格式都不对应,在显示?@Summer时,我不需要担心CultureInfo-我建议阅读上的文档。文化可能会有影响,尽管我不相信在这种特殊情况下会有影响。