【问题标题】:PgSqlExcetion: date/time field value out of range: "4/20/2012 12:00:00 AM"PgSqlExcetion:日期/时间字段值超出范围:“4/20/2012 12:00:00 AM”
【发布时间】:2012-05-01 19:25:16
【问题描述】:

我想在数据库中插入数据表

    public void InsertNote(DataTable dataTable)
            {
                var query = new StringBuilder();

                query.Append("INSERT INTO sde.\"Table1\" 
(id, disciplol, date, second_id, note, key) VALUES ");

                foreach (DataRow row in dataTable.Rows)
                {
                    query.AppendFormat(" ({0}, '{1}', '{2}', {3}, '{4}', '{5}'),", 
row["classid"], row["disciplina"], row["datelesson"], row["student_id"], "", row["key"]);
                }

                // TODO : Review
                query.Replace(',', ';', query.Length - 2, 2);

                var cmd = new PgSqlCommand(query.ToString());

                var con = DB.Sqlconnection;
                cmd.Connection = con;
                con.Open();
                try
                {
                    cmd.ExecuteNonQuery();
                    // result = true;
                }
                catch (Exception ex)
                {
                    //result = false;
                    log.Error("InsertInTable1", ex.ToString());
                }
                finally
                {
                    con.Close();
                }
            }

在生成的 CMD 中我有这个查询:

INSERT INTO sde."RegistruNote" (first_id, discipline, date, second_id, note, key) VALUES  
(131415, 'Painting', '4/20/2012 12:00:00 AM', 432431, 'asd', 'aWbhxZn3X'), 
(131415, 'Painting', '4/20/2012 12:00:00 AM', 432432, 'fas', '3Dl8YCSgX'), 
(131415, 'Painting', '4/20/2012 12:00:00 AM', 432433, 'asd', '8RiBgcjuL'), 
(131415, 'Painting', '4/20/2012 12:00:00 AM', 432434, 'fds', '8rAW1VfC7'), 
(131415, 'Painting', '4/20/2012 12:00:00 AM', 432435, 'gfd', 'LhRP2y5Ji'), 
(131415, 'Painting', '4/20/2012 12:00:00 AM', 432436, 'wer', 'lGVa5boYs'), 
(131415, 'Painting', '4/20/2012 12:00:00 AM', 432437, 'wer', 'hbFfo2zNg'), 
(131415, 'Painting', '4/20/2012 12:00:00 AM', 432438, 'we', 'xEq7iAhMi'), 
(131415, 'Painting', '4/20/2012 12:00:00 AM', 432439, 'rew', 'drFNV9sCm'), 
(131415, 'Painting', '4/20/2012 12:00:00 AM', 432410, 'tw', 'dJ5XwJLQy');

在 catch 我有这个例外: PgSqlExcetion 日期/时间字段值超出范围:“4/20/2012 12:00:00 AM”

我必须在哪里将日期转换为 dd.mm.yyyy 格式?

【问题讨论】:

  • foreach(dataTable.Rows 中的 DataRow 行){ query.AppendFormat(" ({0}, '{1}', '{2}', {3}, '{4}', '{5}'),", row["classid"], row["disciplina"], /*这里我已经指明格式*/ (row["datelesson"] is DateTime ? (DateTime) row["datelesson "] : new DateTime()).ToString("dd.MM.yyyy"), row["student_id"], "", row["key"]); } 现在格式是 dd.mm.yyyy 并且插入工作)

标签: c# asp.net postgresql datetime


【解决方案1】:

看看使用 PgSqlParameter 对象而不是将整个查询构建为字符串 - 可能是服务器未设置为识别您的客户端使用的语言环境。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-08-11
    • 2020-12-03
    • 1970-01-01
    • 2012-07-08
    • 2012-06-30
    • 1970-01-01
    相关资源
    最近更新 更多