简体   繁体   English

如何将字符串插入日期类型字段?

[英]How do I insert a string into date type field?

I am working with a python script that selects a data from a Postgresql DB like this.我正在使用 python 脚本,该脚本从 Postgresql 数据库中选择数据,如下所示。

SELECT * FROM table;

One of those fields is a "datetime.date" type which I formatted with:其中一个字段是我格式化的“datetime.date”类型:

data.isoformat()

So now the field should be a string that looks like this: '1900-01-01'.所以现在该字段应该是一个看起来像这样的字符串:'1900-01-01'。

After that I want to put that into an IBM AS400 DB.之后,我想将其放入 IBM AS400 DB。 The input field is a date type and when I try to do it I get this error message:输入字段是日期类型,当我尝试这样做时,我收到以下错误消息:

java.sql.SQLException: Data type mismatch.(1900-01-01) java.sql.SQLException:数据类型不匹配。(1900-01-01)

What am I doing wrong?我究竟做错了什么?

Thank you for your help.谢谢您的帮助。

Yes I am trying to insert into an AS400 DB.是的,我正在尝试插入 AS400 DB。 It's a simple Insert statement that I wrote in Python.(looks like this but a little bigger)这是我在 Python 中写的一个简单的插入语句。(看起来像这样,但有点大)

insert into table (field1, field2) values (?,?);

The values are: (Decimal('0'), '1900-01-01') The second value is a datetime.date which i formatted with isoformat().值是: (Decimal('0'), '1900-01-01') 第二个值是我用 isoformat() 格式化的 datetime.date。 And when I try to insert i get the error message above.当我尝试插入时,我收到上面的错误消息。

Edit 2:编辑2:

I am using Python.我正在使用 Python。 The code looks like this:代码如下所示:

conAS400 = jaydebeapi.connect(data)
cursAS400 = conAS400.cursor()
cursAS400.execute(sql, values)

If your date input parameter is a string, then on PostgreSQL you can use casting types, for example:如果您的日期输入参数是一个字符串,那么在 PostgreSQL 上您可以使用转换类型,例如:

insert into table1 (field1, field2) values (12, '2022-02-06'::date);

'2022-02-06' is a string parameter but ::date converting string type to date type on PostgreSQL. '2022-02-06' 是一个字符串参数,但::date在 PostgreSQL 上将字符串类型转换为日期类型。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM