也许您需要不同的 "datestyle" 设置
Perhaps you need a different "datestyle" setting
我有一个 table,它有一个日期类型的列 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)我如何根据数据库转换它?
任何一种日期格式转换成系统数据库。
谢谢
您正在使用日期字符串,并依赖会话设置来正确解释字符串。请改用受支持的日期文字,以便独立于设置。
在 PostgreSQL(以及相关的 SQL 标准)中 DATE 'YYYY-MM-DD' 被认为是日期文字,是我推荐的格式。所以使用
INSERT INTO uni_data_temp
( sale_order_item_code
, order_date
, sale_order_item_status
, tracking_number
, dispatch_date
, user_id
)
VALUES
( '1000932515'
, DATE '2015-05-16'
, 'DISPATCHED'
, 'UNIPAYP1958141'
, DATE '2015-05-20'
, 4
);
(感谢 a_horse_with_no_name 指出我在 PostgreSQL 中正确的日期文字语法。)
但是,如果您从某处获取字符串形式的日期,则需要应用相应的格式:
TO_DATE('06/05/2015', 'DD/MM/YYYY')
TO_DATE('05/06/2015', 'MM/DD/YYYY')
在您的 postgresql.conf 中,您有一个名为 datestyle 的设置,它由 out 和 in 两部分组成。
可能设置为 iso, mdy
(输出为 ISO,输入为美国)尝试将其设置为 iso, dmy
我有一个 table,它有一个日期类型的列 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)我如何根据数据库转换它?
任何一种日期格式转换成系统数据库。
谢谢
您正在使用日期字符串,并依赖会话设置来正确解释字符串。请改用受支持的日期文字,以便独立于设置。
在 PostgreSQL(以及相关的 SQL 标准)中 DATE 'YYYY-MM-DD' 被认为是日期文字,是我推荐的格式。所以使用
INSERT INTO uni_data_temp
( sale_order_item_code
, order_date
, sale_order_item_status
, tracking_number
, dispatch_date
, user_id
)
VALUES
( '1000932515'
, DATE '2015-05-16'
, 'DISPATCHED'
, 'UNIPAYP1958141'
, DATE '2015-05-20'
, 4
);
(感谢 a_horse_with_no_name 指出我在 PostgreSQL 中正确的日期文字语法。)
但是,如果您从某处获取字符串形式的日期,则需要应用相应的格式:
TO_DATE('06/05/2015', 'DD/MM/YYYY')
TO_DATE('05/06/2015', 'MM/DD/YYYY')
在您的 postgresql.conf 中,您有一个名为 datestyle 的设置,它由 out 和 in 两部分组成。
可能设置为 iso, mdy
(输出为 ISO,输入为美国)尝试将其设置为 iso, dmy