Bạn đang kết nối với cơ sở dữ liệu nào? Tôi biết Oracle có thể kén chọn định dạng ngày tháng và thích định dạng ISO 8601 .
** Lưu ý: Rất tiếc, tôi vừa đọc được rằng bạn đang sử dụng MySQL. Chỉ cần định dạng ngày và thử nó như một cuộc gọi SQL trực tiếp riêng biệt để kiểm tra.
Trong Python, bạn có thể nhận được ngày ISO như
now.isoformat()
Ví dụ, Oracle thích những ngày như
insert into x values(99, '31-may-09');
Tùy thuộc vào cơ sở dữ liệu của bạn, nếu đó là Oracle, bạn có thể cần TO_DATE nó:
insert into x
values(99, to_date('2009/05/31:12:00:00AM', 'yyyy/mm/dd:hh:mi:ssam'));
Việc sử dụng chung của TO_DATE là:
TO_DATE(<string>, '<format>')
Nếu sử dụng cơ sở dữ liệu khác (tôi nhìn thấy con trỏ và nghĩ là Oracle; có thể tôi đã nhầm) thì hãy kiểm tra các công cụ định dạng ngày của họ. Đối với MySQL, nó là DATE_FORMAT () và SQL Server thì nó là CONVERT.
Ngoài ra, sử dụng một công cụ như SQLAlchemy sẽ loại bỏ những khác biệt như thế này và giúp cuộc sống của bạn trở nên dễ dàng.
%s
cursor.execute("INSERT INTO table (name, id, datecolumn) VALUES (%s, %s , '%s')",("name", 4,now))