2013-05-19 164 views
8

我在我的SQL數據庫中有一個date類型的列。我如何將它轉換爲C#DateTime然後再回到SQL date如何將SQL日期轉換爲DateTime?

+6

你是如何檢索記錄的.Date財產? –

+1

我想用'Select * from News where add_date <@selected_date' 而我使用SqlDataReader – petros

回答

7

C# 從讀者

DateTime date1; 
DateTime.TryParse(reader["datecolumn"], out date1); 

獲取日期要插入日期

string date1="2013-12-12"; 
DateTime date2; 
DateTime.TryParse(reader["datecolumn"],out date2); 

SqlCommand cmd= new SqlCommand("Insert into table (dateColumn) Values(@date2)",connection); 
cmd.Parameters.AddWithValue("@date2",date2.Date); 

的TryParse上成功鑄造否則爲false返回true。

VB

從讀者

Dim date1 as Date=CType(reader("dateColumn"),Date) 

獲取日期要插入日期

Dim date1 as String="2013-12-12" 'you can get this date from an html input of type date 

Dim cmd As New SqlCommand("Insert into table (dateColumn) Values(@date1)",connection) 
cmd.Parameters.AddWithValue("@date1",CType(date1, Date)) 

注:代碼是用VB寫。你可以很容易地編寫上面代碼的c#等價物。函數名稱在VB和c#中保持不變。此外CTYPE是不是在C#提供(儘管date1=(DateTime)reader("dateColumn");它一樣明確鑄造變量例如,我會建議使用TryParse不扔在不成功的解析/鑄造任何異常。

語法

Date.TryParse(reader("dateColumn"), date1) 
+2

@newStackExchangeInstance在投票前你甚至讀過我的答案嗎?你甚至知道VB和C#是什麼,它們之間幾乎沒有什麼區別? – thunderbird

+1

@thunderbird Macintosh蘋果不是格蘭尼史密斯蘋果,雖然它們都是蘋果。如果你想要一個,並得到另一個,你可能會感到煩惱或至少困惑/驚訝。 – Yuck

+0

@Yuck我已經給出瞭如何將其轉換爲C#的說明。除了VB和C#就像在java和C++中編寫代碼一樣。如果你知道一個,你得到另一個。無論如何我會把它翻譯成C#。 – thunderbird

9

一個SQL DATE可以直接轉換爲.NET DateTime,反之亦然。

得到它,使用SqlDataReader.GetDatetime Method

DateTime myDate = myDataReader.GetDateTime(myColumnIndex); 

來設置它,只需將其分配給SqlParameter的價值和使用datetime

+1

Thx。當msdn說「沒有執行轉換;因此,檢索的數據必須已經是DateTime對象時,我感到困惑。」 –

1
string mydate= Convert.ToDateTime(reader["dateColumn"]).ToShortDateString().ToString()); 

這些代碼工作me.Try其中之一