[PostgreSQL] Jak wykonac konwersje typow ?

0

Mam dwa pola jedno ktore ma typ VARCHARE a drugie pole typu DATE
Wykonujac zapytanie:
update tab set new=old where id in (select id from tab) ;
powoduje ze z pola OLD dane zostana przepisane do pola NEW
pole OLD jest typy VARCHAR
pole NEW jest typu DATE
przykladowy wpis w jednym rekordzie w polu OLD: 2007-03-03

Jak wykonac zapytanie by dane przepisaly sie do pola NEW?

0

zrobilem tak (przyklad)
update test set date3 = CAST(date2 AS date) where id in (25,26) ;
a drugi sposób:
update test set date3 = date2::date where id in (25,26) ;
i mam komunikat:
ERROR: cannot cast type character varying to date
To znaczy ze nie da sie ? :(

0

zobacz co Ci zwróci select now()::date; i porównaj to z Twoimi wpisami daty

BTW u mnie na PG8.1 zarówno
select cast((cast('2007-01-01' as varchar(10))) as date);
jak i
select ('2007-01-01'::varchar(10))::date;
przechodzi bez problemu

0

to mam tak Misiekd:

Jak wpisuje:
select now()::date;
dostaje wynik: 2007-12-03

jak wpisuje:
update test set date3 = '2007-01-01'::date where id in (25,26) ;
Dziala dobrze

a jak wpisze:
update test set date3 = data2::date where id in (25,26) ;
wtedy jest blad, pole date2 jest: date2 character varying
te dwa sposoby Twoje nie dzialja mi:

select cast((cast('2007-01-01' as varchar(10))) as date);
select ('2007-01-01'::varchar(10))::date;

kurcze nie wiem czemu mam chyba 7.4 P-sql ale moze z tego
character na jakas konwersje i z tej konwersji na date ? :`(

0

W każdym razie dziekuje za naprowadzenie a dziala to tak u mnie:

<font size="3">update test set date3 = date1::date; </span>

0

tabela

CREATE TABLE "public"."t" (
"ts" VARCHAR(10),
"td" DATE
) WITH OIDS;

potem inserty

insert into t(ts) VALUES(now():📅:varchar(10));
insert into t(ts) VALUES(now():📅:varchar(10));
insert into t(ts) VALUES(now():📅:varchar(10));

a potem update

update t set td=ts::date;

i u mnie poszło

1 użytkowników online, w tym zalogowanych: 0, gości: 1