sql - Perl and Oracle DB - help -
i using oracle express database, , know how can change date formatting- dd-mm-yyyy dd-mm-yyyy hh-mm. also, i've heard alter session
, don't know how use in perl.
this did far:
my $sth = $dbh->prepare("insert perl (a_field,b_field,c_field,time_stame) values (?,?,?,to_date(?,'dd/mm/yyyy hh24:mi'))");
date fields in oracle not formatted display - it's internal format convert to/from on input/output. when store date in oracle date datatype columns, convert character string internal format describing date-time to_date function format model string. oracle interprets character string it's internal format. when need display date, reverse - tell oracle how display date again giving format model, time to_char function.
to illustrate example, convert dd-mm-yyyy dd-mm-yyyy hh-mm without ever storing value (i assume meant display hours-minutes. format model minutes 'mi', since 'mm' month):
sql> select to_char(to_date('01-01-2020','dd-mm-yyyy'),'dd-mm-yyyy hh-mi') mydate dual; mydate ---------------- 01-01-2020 12-00
note example, time portion of date not supplied on input, defaults midnight. store time value in date column, must supply time value in input:
sql> select to_char(to_date('01/01/2020 10:13','dd/mm/yyyy hh:mi'),'dd-mm-yyyy hh-mi') mydate dual; mydate ---------------- 01-01-2020 10-13 sql>
depending on you're trying do, system date in oracle can obtained reference pseudo-column sysdate:
sql> select to_char(sysdate,'mm/dd/yyyy hh:mi:ss am') dt1, 2 to_char(sysdate,'dd-mon-yyyy hh24:mi:ss') dt2 3 dual; dt1 dt2 ---------------------- ----------------------------- 07/01/2011 03:44:30 pm 01-jul-2011 15:44:30 sql>
so roundabout answer question entirely depends on format input date string in. convert oracle's date type via format model , to_date function, convert date item display format of choosing via to_char , format model. "alter session" command alluded in question, can specify default format model date conversions specifying nls_date_format parameter in alter session command:
sql> select sysdate dual; sysdate --------- 02-jul-11 sql> alter session set nls_date_format='dd-mon-yyyy hh24:mi:ss'; session altered. sql> select sysdate dual; sysdate -------------------- 02-jul-2011 10:39:24
Comments
Post a Comment