PostgreSQL 9.3:将'DD-MM-YYYY'转换为'YYYY-MM-DD'`

PostgreSQL 9.3:将'DD-MM-YYYY'转换为'YYYY-MM-DD'`,postgresql,postgresql-9.3,Postgresql,Postgresql 9.3,在我的函数中,我有以下varchar类型的日期转换为格式YYYY-MM-DD 我将v_Date作为参数传递给函数,并在函数中执行转换 脚本: DO $$ DECLARE v_Date varchar := '16-01-2010 00:00:00'; v_SQL varchar; BEGIN v_SQL := 'SELECT to_date('''|| v_Date ||''',''YYYY-MM-DD'')'; RAISE INFO '%',v_SQL; E

在我的函数中,我有以下varchar类型的日期转换为格式
YYYY-MM-DD

我将v_Date作为参数传递给函数,并在函数中执行转换

脚本

DO
$$
DECLARE v_Date varchar := '16-01-2010 00:00:00';
    v_SQL varchar;
BEGIN
    v_SQL := 'SELECT to_date('''|| v_Date ||''',''YYYY-MM-DD'')';

    RAISE INFO '%',v_SQL;

    EXECUTE v_SQL;
END;
$$
上述脚本准备以下脚本:

INFO:  SELECT to_date('16-01-2010 00:00:00','YYYY-MM-DD')
这给了我一个结果:

0021-07-02
但预期结果应该是:

2010-01-16
选择截止日期('16-01-2010 00:00:00','YYYY-MM-DD')

您的模式与输入不匹配。您需要使用
dd-mm-yyyy
将输入转换为正确的日期(您可以省去额外的时间部分)

date
值的格式化输出取决于您的SQL客户端和(或)LC\U时间的当前设置。为确保获得
yyyyy-mm-dd
输出,必须使用
To_char()

选择截止日期('16-01-2010 00:00:00','YYYY-MM-DD')

您的模式与输入不匹配。您需要使用
dd-mm-yyyy
将输入转换为正确的日期(您可以省去额外的时间部分)

date
值的格式化输出取决于您的SQL客户端和(或)LC\U时间的当前设置。为确保获得
yyyyy-mm-dd
输出,必须使用
To_char()

SELECT to_date('16-01-2010 00:00:00','dd-mm-yyyy');
SELECT to_char(to_date('16-01-2010 00:00:00','dd-mm-yyyy'), 'yyyy-mm-dd');