我有一张表格,其中有一个日期类型的列 order_date。
查询:
INSERT INTO uni_data_temp(sale_order_item_code,
order_date, sale_order_item_status, tracking_number, dispatch_date,
user_id) VALUES ('1000932515', cast('16/05/2015' as date), 'DISPATCHED', 'UNIPAYP1958141', '2015/05/20', '4')
当我运行这个查询时,它会出现错误:
翻译内容需要提供具体的查询和错误信息才能给予更准确的帮助。
ERROR: date/time field value out of range: "16/05/2015"
SQL state: 22008
Hint: Perhaps you need a different "datestyle" setting.
Character: 380
然后我改变了查询
INSERT INTO uni_data_temp(sale_order_item_code,
order_date, sale_order_item_status, tracking_number, dispatch_date,
user_id) VALUES ('1000932515', cast('2015/05/16' as date), 'DISPATCHED', 'UNIPAYP1958141', '2015/05/20', '4')
它工作得很好。
但是我的问题是日期可能以任何格式出现(yyyy/mm/dd或dd/mm/yyyy),我该如何根据数据库进行转换?
任何日期格式都可以转换为系统数据库。
谢谢你。
SELECT TO_CHAR(NOW(), 'yyyy/mm/dd')::date;
。 - Vivek S.now()
,但仍然出现错误:to_char(unknown, unknown)
函数不唯一。 - YAMmm/dd/yyyy
)。您应该在客户端设置一些标准,使所有日期以特定格式输入,然后您可以使用to_date()
将其转换为PG可以理解的格式,以防它不是ISO样式。 - Patrickto_date(:datestring, :formatstring)
。 - Thorsten Kettner