Re: How to format a date with a serial number for DEFAULT?
От | Robert Perry |
---|---|
Тема | Re: How to format a date with a serial number for DEFAULT? |
Дата | |
Msg-id | 7c3af9cfcb7efac34c8d997d7ce19e9f@lodestonetechnologies.com обсуждение исходный текст |
Ответ на | Re: How to format a date with a serial number for DEFAULT? ("Andrei Bintintan" <klodoma@ar-sd.net>) |
Список | pgsql-admin |
I am far to lazy to bother actually trying it, but I believe prefixing your format string for the bigint returned by nextval with 'FM' will eliminate your need for the trim. On Mar 15, 2005, at 11:15 AM, Andrei Bintintan wrote: > CREATE TABLE test( > counter SERIAL, > foobar CHAR(18) > DEFAULT to_char(CURRENT_DATE, 'DDMMYYYY') || > trim(to_char(nextval('test_counter_seq'),'0000000000')), > tekst TEXT); > > I don't know exactly why the white space is in, but the trim function > takes > it out. > > Best regards, > Andy. > > ----- Original Message ----- From: "Michiel Lange" > <michiel@minas.demon.nl> > To: <pgsql-admin@postgresql.org> > Sent: Tuesday, March 15, 2005 5:27 PM > Subject: [ADMIN] How to format a date with a serial number for DEFAULT? > > >> Hello list, >> >> I am trying to create a table that hould countain a number formatted >> this >> way: YYYYMMDD########## >> >> Where the hashes should be padded to '0'. >> >> I have tried the following >> template_test=# CREATE TEMP TABLE test ( >> template_test(# counter SERIAL, >> template_test(# foobar CHAR(18) >> template_test(# DEFAULT CAST(date_part('year',current_date) AS TEXT) >> template_test(# || >> CAST(CAST(to_char(date_part('month',current_date),'00') AS INT) AS >> TEXT) >> template_test(# || >> CAST(CAST(to_char(date_part('day',current_date),'00') AS INT) AS TEXT) >> template_test(# || >> CAST(CAST(to_char(nextval('test_counter_seq'),'0000000000') AS INT) AS >> TEXT), >> template_test(# tekst TEXT); >> >> This resulted in something almost good, but I lost the padding zeroes. >> I got "20053151" >> >> Without the many CAST's like this: >> template_test=# CREATE TEMP TABLE test ( >> template_test(# counter SERIAL, >> template_test(# foobar CHAR(18) >> template_test(# DEFAULT CAST(date_part('year',current_date) AS TEXT) >> template_test(# || >> to_char(date_part('month',current_date),'00') >> template_test(# || to_char(date_part('day',current_date),'00') >> template_test(# || >> to_char(nextval('test_counter_seq'),'0000000000'), >> template_test(# tekst TEXT); >> >> Resulted in something almost right as well, but now to_char adds a >> space >> before each to_char >> I would get a result like "2005 03 05 0000000001" >> >> What options do I have to get this straight? >> >> Mind that I created TEMP tables to test how I should set my default >> value.... >> TIA >> Michiel >> >> ---------------------------(end of >> broadcast)--------------------------- >> TIP 4: Don't 'kill -9' the postmaster >> >> > > > > ---------------------------(end of > broadcast)--------------------------- > TIP 9: the planner will ignore your desire to choose an index scan if > your > joining column's datatypes do not match >
В списке pgsql-admin по дате отправления: