2011-07-12 70 views
1

我不知道,它被插入到MYSQL數據庫在這種格式如何格式化VB中的一個時間戳:VB:格式化Mysql的時間戳

YYYY-MM-DD 00:00:00 

我想:

Dim timestamp As Date = TimeValue(Now) 

它將它格式化爲0001-01-01 12:33:38 - 如果yyyy-mm-dd實際上是正確的日期,則這是正確的。

+0

它可能更容易設置您的MySQL查詢接受任何VB提供的字符串,並將值轉換爲MySQL的DATETIME使用[STR_TO_D ATE](http://dev.mysql.com/doc/refman/5.5/en/date-and-time-functions.html#function_str-to-date) –

+0

我也做了timestamp.ToString,所以它可以是一個字符串和我做完之後是當我得到了問題的輸出。我會寫你的建議嗎? –

回答

6

您錯過了這一點。

sql數據庫中的實時時間戳記是從不格式化YYYY-MM-DD 00:00:00。這就是它們在查詢或數據窗口中的顯示方式。這些值實際上是存儲在二進制格式,通常是不可讀的,雖然mysql可能仍然使用unix時間。

問題是,你甚至不需要知道確切的格式是什麼。這應該由您的數據庫連接提供程序處理,而不是自己格式化。從VB.Net爲mysql正確插入/更新數據庫時間戳應該如下所示:

Dim sql As String = "UPDATE `Table` Set MyColumn= @DateValue WHERE ID= @ID" 
Using cn As New MySqlConnection("Your connection string here"), _ 
     cmd As New MySqlCommand(sql, cn) 

    cmd.Parameters.Add("@DateValue", MySqlDbType.Datetime).Value = Now 
    cmd.Parameters.Add("@ID", MySqlDbType.Int32).Value = 12345 

    cn.Open() 
    cmd.ExecuteNonQuery() 
End Using 

無需格式化。你也可以只編寫查詢這樣:

Dim sql As String = "UPDATE `Table` Set MyColumn= current_timestamp WHERE ID= @ID" 

但如果你真的堅持創建的字符串,它應該是這樣的:

Now().ToString("yyyy-MM-dd HH:mm:ss") 

使用這裏提供的格式字符串說明:
http://msdn.microsoft.com/en-us/library/8kb3ddd4.aspx