2017-07-11 123 views
0

我已經創建了一個使用Asp.net的休息網頁api。當我試圖插入數據到我的表使用後,我得到這個異常:錯誤的日期值:'07/11/2017 12:00:00 AM'列'日期'在第1行。什麼是正確的日期值插入到Mysql數據庫?不正確的日期值:對於第1行的列'日期'?

public long addmeterreadingrecord(meterreadingrecords meterreadingrecord) 
{ 
    MySqlConnection myconn = getDBConn(); 
    String sqlstr = 
    "INSERT INTO meterreadingrecords (ID,Date,User,ImageLink,ActualMeterReadingID) VALUES ('" 
      + meterreadingrecord.Id + "','" + meterreadingrecord.Date + "','" 
      + meterreadingrecord.User + "','" + meterreadingrecord.Imagelink+"','" 
      + meterreadingrecord.ActualmeterreadingId+"')"; 
     MySqlCommand cmd = new MySqlCommand(sqlstr, myconn); 
     myconn.Open(); 
     cmd.ExecuteNonQuery(); 
     myconn.Close(); 
     myconn.Dispose(); 
     long id = cmd.LastInsertedId; 
     return id; 
    } 

如何使用休息客戶端插入數據。

{ 
"ID" : "zzz", 
"Date": "11/07/2017", 
"User" : "Me", 
"ImageLink" : "testimg", 
"ActualMeterReadingID" : "ccc" 
} 

mysql db中日期的數據類型是Date。不是日期時間。

+0

請避免樣品展示SQL注入 - 因爲它可能會引起負對後期忽視良好做法的反應。按照https://stackoverflow.com/questions/652978/parameterized-query-for-mysql-with-c-sharp中所示,使用參數化查詢。 –

回答

0

MySQL expects a four digit year followed by a two-digit month and a two-digit day.昨天的日期(7月9日)是:

'2017-07-09' 

的MySQL確實能夠替代格式一些補貼(包括接受:作爲分隔符),但它仍然預計格式爲年月 - 日期。根據此標準,值11/07/2017不能是正確的日期。爲了解釋這一點,您需要使用STR_TO_DATE

STR_TO_DATE('11/07/2017', '%d/%m/%Y') 

另外,作爲參考,this is a list of valid date string % variables.

+0

我按照你的說法試過了。但現在得到這個異常截斷不正確的日期值:'11/07/2017 12:00:00 AM' String sqlstr =「INSERT INTO meterreadrecords(ID,Date,User,ImageLink,ActualMeterReadingID)VALUES(''+ meterreadingrecord。 「+」,STR_TO_DATE(''+ meterreadingrecord.Date +'','%d /%m /%Y'),''+ meterreadingrecord.User +'','「+ meterreadingrecord.Imagelink +」','「 + meterreadingrecord.ActualmeterreadingId + 「')」; – batwing

+0

您是否試過'%d /%m /%Y%H:%i:%s'?您可能需要使用一點格式才能使其工作。 – cwallenpoole

+0

謝謝。現在它可以工作。 – batwing

相關問題