似乎.net DateTime對象默認爲計算機設置的任何格式。由於我來自英國,這意味着DateTime對象是DD/MM/YYYY。.net DateTime對象,確保MM/DD/YYYY格式化
這通常很好,但我試圖使用DateTime對象將當前時間放在Access數據庫的記錄提交上。訪問(或者一般來說,SQL並不知道)要求日期格式爲MM/DD/YYYY格式。
有沒有一種方法,我可以讓DateTime對象格式化日期的MM/DD/YYYY格式,或者我將不得不轉換爲字符串,切換字符串,並插入?
似乎.net DateTime對象默認爲計算機設置的任何格式。由於我來自英國,這意味着DateTime對象是DD/MM/YYYY。.net DateTime對象,確保MM/DD/YYYY格式化
這通常很好,但我試圖使用DateTime對象將當前時間放在Access數據庫的記錄提交上。訪問(或者一般來說,SQL並不知道)要求日期格式爲MM/DD/YYYY格式。
有沒有一種方法,我可以讓DateTime對象格式化日期的MM/DD/YYYY格式,或者我將不得不轉換爲字符串,切換字符串,並插入?
如果要插入到數據庫中不使用日期字符串。使用一個參數對象併爲該值提供日期對象。
訪問
string mystatment = "Insert into TableName (column1, datecolumn) values (?,?)"
OleDbCommand cmd = conn.CreateCommand();
cmd.Commandtext = mystatement;
cmd.Parameters.AddWithValue("@column1", mycolumn1variable);
cmd.Parameters.AddWithValue("@datecolumn", yourDateTimeVariable);
,如果你正確地做這個用的生產代碼請確保您有異常處理等
using (OleDbConnection conn = new OleDbConnection("connection string"))
{
using (OleDbCommand cmd = conn.CreateCommand())
{
cmd.CommandText = "Insert into TableName (column1, datecolumn) values (?,?)";
OleDbParameter param;
param = new OleDbParameter("name", OleDbType.VarChar, 36); // if you know the size of the column specify it
param.Value = mycolumn1variable;
cmd.Parameters.Add(param);
param = new OleDbParameter("mydate", OleDbType.Date); // if you know the size of the column specify it
param.Value = yourDateTimeVariable;
cmd.Parameters.Add(param);
conn.Open();
cmd.ExecuteNonQuery(); //etc
}
}
爲SQL使用名爲@參數來代替?在你的語句中使用SqlCommand。
如果是用於屏幕顯示,請根據用戶的文化來確定用戶設置和格式。
這背後的原因是什麼?我所做的字符串連接最終工作正常,爲什麼這種方法會更好? –
正如你所見,字符串格式的日期取決於位置。考慮10月1月和10月1日當你有美國和GB/AU日期格式 –
因爲使用這種方法你讓.NET和Access做沉重的舉重。無論使用何種格式,Access都可以計算出日期。讓它。從理論上講,你的數據庫可能處於與你的程序不同的上下文環境中(因此也就是文化),因此你不希望將這種插入方式與單個文化聯繫起來。加硬編碼文化格式不是好習慣。 – MPelletier
可以調用則DateTime.ToString( 「MM/DD/YYYY」),所以你不必切換它周圍
方法DateTime
結構
使用ToString
:
using System;
using System.Globalization;
string s = DateTime.Now.ToString("MM/dd/yyyy", CultureInfo.InvariantCulture);
Console.WriteLine(s);
你可以做這樣的事情,當你利用DateTime
類:
DateTime yourDate = DateTime.Now;
Console.WriteLine("Your Date: {0}", yourDate.ToString("MM/dd/yyyy"));
謝謝你,我沒有意識到DateTime的ToString覆蓋,我認爲我將不得不將它轉換爲一個字符串,並且改變它,我自己。 –
@SamuelSmith不需要「換刀」。 DateTime類非常容易和模具一起工作。 :) 很高興我能幫上忙。 – 2011-11-07 01:49:39
您可能應該使用yyyy-MM-dd格式(ISO 8601) –
實際上,如果您正確使用DateTime字段,日期格式不會變成什麼格式,因爲沒有轉換爲字符串。你沒有使用連接的SQL字符串,對嗎?那會很糟糕。 –
Maaaaaaaaaaaaaaaaaaaaaybe ... –