如何在postgresql中使用to_date函数?

时间:2017-04-19 14:36:32

标签: postgresql plpgsql

select to_date('20170202','YYYYMMDD');

返回:

2017-02-02

但是当我这样做时:

select to_date('20172202','YYYYMMDD');

输出是:

2018-10-04

当月份错误时,为什么不像Oracle中那样返回错误?

4 个答案:

答案 0 :(得分:1)

我认为这是导致错误的原因:

  

to_timestamp和to_date用于处理无法通过简单转换转换的输入格式。这些函数可以自由地解释输入,只需最少的错误检查。虽然它们产生有效输出,但转换可能会产生意外结果。例如,对这些功能的输入不受正常范围的限制,因此to_date(' 20096040',#YYYYMMDD')返回2014-01-17而不是导致错误。 Casting没有这种行为。

https://www.postgresql.org/docs/9.6/static/functions-formatting.html

答案 1 :(得分:1)

YYYYMMDD必须YYYYDDMM个月不能大于12。

答案 2 :(得分:0)

我得到了我想要的答案/ 我使用 to_char 代替 to_date ,我将fisrt参数投射到日期..

select to_char(DATE '20162202,'YYYYMMDD') into datResult ;

所以我现在可能有错误..

感谢大家的帮助

答案 3 :(得分:0)

现在此命令引发错误(此问题已在PostgreSQL 10中修复):

postgres=# select to_date('20172202','YYYYMMDD');
ERROR:  date/time field value out of range: "20172202"