簡體   English   中英

使用C#在MySQL DB中從JSON響應插入DateTime

[英]Insert DateTime from JSON response in MySQL DB using C#

我已經搜索了很多東西,但是所有線程似乎都希望現在插入“ Date Time”,但我不是。

我目前收到以下格式的日期時間:

"Date":"2018-03-03T11:00:00Z"

我正在嘗試插入列數據集為DATETIME的MySQL數據庫中

我正在使用以下INSERT語句:

"INSERT INTO tblname (col1, col2) VALUES (@Name, @Date) ON DUPLICATE KEY UPDATE col1 = @Name";

通過AddWithValue參數提供值,如下所示:

Command.Parameters.AddWithValue("@Date", Jo["Results"][x]["Date"]);

這總是導致我在數據庫中收到以下信息:

0000-00-00 00:00:00

下面是所使用代碼的完整修改版本(為簡潔起見):

using MySql.Data.MySqlClient;
using Newtonsoft.Json.Linq;
using System;
using System.IO;
using System.Net;
using System.Text;

namespace stackoverflow
{
class forstackoverflow
{
    public static int x = 0;
    public static JObject Jo { get; set; }

    static void Main()
    {

        string apiUrl = "REMOVED URL";
        {
            HttpWebRequest request = (HttpWebRequest)WebRequest.Create(apiUrl);
            HttpWebResponse response = (HttpWebResponse)request.GetResponse();
            Stream responseStream = response.GetResponseStream();
            StreamReader readerStream = new StreamReader(responseStream, Encoding.GetEncoding("utf-8"));
            string json = readerStream.ReadToEnd();
            readerStream.Close();
            var Jo = JObject.Parse(json);
            JArray id = (JArray)Jo["Results"];
            for (int x = 0; x < id.Count; x++)
            {
                string sqlstring = "sql already highlighted.";

                MySqlConnection Connection = null;
                const string ConnectionString = @"REMOVED CONNECTION DETAILS";
                Connection = new MySqlConnection(ConnectionString);
                MySqlCommand Command = new MySqlCommand(sqlstring, Connection);

                Command.Parameters.AddWithValue("@Name", (string)Jo["Results"][x]["name"]);
                Command.Parameters.AddWithValue("@Date", (string)Jo["Results"][x]["date"]);

                Connection.Open();
                Command.ExecuteNonQuery();
                Connection.Close();
                Connection.Dispose();

                Console.WriteLine((string)Jo["Results"][x]["name"] + " was inserted or updated in the database.");
            }
        }
    }
  }
}

當我嘗試將DateTime 2018-03-03T11:00:00Z插入我的數據庫(這是實際的DATETIME類型)時,出現以下錯誤:

Warning: #1265 Data truncated for column 'date' at row 1

我認為您的數據庫正在處理此錯誤,並且僅默認為0000-00-00 00:00:00 MySQL DATETIME必須采用yyyy-MM-dd HH:mm:ss的格式。 這意味着,如果您修改示例並從中刪除TZ ,並在日期和時間之間放置一個空格,則可以將其插入數據庫中。

您只需使用以下命令即可將其設置為正確的格式:

    var test = "2018-03-03T11:00:00Z";
    test = test.Replace("T", " ").Replace("Z", " ");

希望這可以幫助。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM