2013-12-23 33 views
0

我有以下問題。 timeformat我的數據庫讓我回來取決於服務器設置。 所以,如果我這樣做查詢:c#mysql datetime到unix時間

string query = "SELECT d.id, i.name, d.address, d.sensor, d.value, d.made, d.received, s.type, r.name AS room 
      FROM info AS i 
      RIGHT JOIN data AS d ON i.address = d.address AND i.sensor = d.sensor 
      LEFT JOIN sensor_types AS s ON i.type = s.id 
      LEFT JOIN room AS r ON i.room = r.id 
      WHERE i.address = '" + address + "' 
      && i.sensor = '" + sensor + "' 
      && DATE(d.received) BETWEEN '" + start + "' AND '" + end + "'"; 

在服務器1,我回去今天2013-12-23 2:29:14和服務器2,我回去23-12-2013 2:29:14

在某些情況下,我需要的unixtime所以我用這個功能吧,這在1的情況下工作正常,但如果2給出了一個錯誤:

public string DateTimeToUnixTime(string text) 
{ 
    DateTime myDate = DateTime.ParseExact(text, "yyyy-MM-dd HH:mm:ss", 
           System.Globalization.CultureInfo.InvariantCulture); 
    TimeSpan span = (myDate - new DateTime(1970, 1, 1, 0, 0, 0, 0).ToLocalTime()); 

    //return the total seconds (which is a UNIX timestamp) 
    return ((double)span.TotalSeconds).ToString(); 

} 

什麼是解決這個問題的最好方法是什麼?

回答

2

如果您需要將datetime轉換爲unix時間。 您可以使用UNIX_TIMESTAMP()函數的MySQL。

試試這個:

SELECT UNIX_TIMESTAMP(STR_TO_DATE('Dec 23 2013 02:29AM', '%M %d %Y %h:%i%p')) 

你可以閱讀更多here

希望有幫助! :)

+0

thx這樣我可以避免所有問題 –

2

不說這是最好的方式,但如果唯一可能的格式是這兩個,你可以測試一個使用DateTime.TryParseExact,如果失敗,假定它是另一種格式。

DateTime myDate; 

if (!DateTime.TryParseExact(text, "yyyy-MM-dd HH:mm:ss", 
          System.Globalization.CultureInfo.InvariantCulture, 
          DateTimeStyles.None, out myDate); 
{ 
    myDate = DateTime.ParseExact(text, "dd-MM-yyyy HH:mm:ss", 
          System.Globalization.CultureInfo.InvariantCulture); 
}