在mysql数据库中使用c从json响应插入datetime#

c0vxltue  于 2021-06-20  发布在  Mysql
关注(0)|答案(1)|浏览(258)

我已经搜索了这个我觉得是很多,但所有的线程似乎是要插入日期时间现在,我不是。。
我目前收到的日期时间格式如下: "Date":"2018-03-03T11:00:00Z" 我试图插入一个mysql数据库,其中列数据集是datetime
我使用以下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.");
            }
        }
    }
  }
}
brjng4g3

brjng4g31#

当我尝试插入日期时间 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 . 这意味着如果修改示例并删除 T 以及 Z 从中,以及在日期和时间之间放置一个空格,然后可以将其插入数据库。
您只需使用以下命令即可将其设置为正确的格式:

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

希望这有帮助。

相关问题