在Microsoft SQL Server Management Studio中,在調用存儲過程之後,我可以看到表格中的格式爲2011-05-20 19:56:09
。如何在與SQL的連接中設置日期格式?
但是,在我的C#程序中,使用OdbcConnection
從表中獲取記錄後,我發現時間格式爲05/20/2011 19:56:09
。因此,我手動將格式MM/DD/YYYY hh:mm:ss
轉換爲YYYY-MM-DD hh:mm:ss
(實際上,我如何驗證格式爲h
或HH
,因爲時間顯示爲19?)。
我的問題是爲什麼和在連接的哪個部分,格式被改變?我如何在我的聯繫中設置不變的文化?
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);
}
}
我懷疑這個值在數據庫中有格式。 (在這裏查看詳細信息)(http://stackoverflow.com/questions/1437454/date-format-problem)(處理C#'DateTime',但可能在這裏應用相同種類的邏輯)。 – 2011-05-30 20:54:56
'CDate'方法中''returns'太多了。你能告訴我們在你的情況下執行哪一個? – Snowbear 2011-05-30 20:55:59
@Snowbear,第一個返回在我的程序中執行,如添加註釋 – Summer 2011-05-30 21:06:06