We're Moving!

The Vertica Forum is moving to a new OpenText Analytics Database (Vertica) Community.

Join us there to post discussion topics, learn about

product releases, share tips, access the blog, and much more.

Create My New Community Account Now


need to extract century(20th or 21st) based on the date given — Vertica Forum

need to extract century(20th or 21st) based on the date given

I am trying to extract a date from a string. On conversion, I am getting incorrect century for the year actual value expected value 123051  = 1951-12-30 Below is the query and result on date conversion: SELECT TO_DATE('123051','mmddyy'); 2051-12-30 Any year between 70 & 99 are auto converted to 20th century select to_date('030270','MMDDYY'); to_date ------------ 1970-03-02

Comments

  • daniel=> create table soma (dt char(6));
    CREATE TABLE

    daniel=> copy soma from stdin;
    Enter data to be copied followed by a newline.
    End with a backslash and a period on a line by itself.
    >> 110813
    >> 123051
    >> \.

    daniel=> select * from soma;
       dt  
    --------
     110813
     123051
    (2 rows)

    daniel=> \p
    select dt,
           decode(dt % 100 < 14, 0, 19, 20) "century",
           date(decode(dt % 100 < 14, 0, 19, 20) || dt % 100 || dt // 100) "date"
      from soma;

    daniel=> \g
       dt   | century |    date   
    --------+---------+------------
     110813 |      20 | 2013-11-08
     123051 |      19 | 1951-12-30
    (2 rows)
  • wonderful... thanks for the quick response.... I have tweaked the SQL stmt as follows .. => \p select dt "rawDt", to_date(dt,'mmddyy') "toDt", decode(dt % 100 < 14, 0, 19, 20) "century", dt % 100 "year", date(decode(dt % 100 < 14, 0, 19, 20) || dt % 100 || dt // 100) "dandt", date(decode(dt % 100<(year(current_date)%100+1),0,19,20)||dt%100||substr(dt,1,4)) as dandt2, to_date(decode(dt % 100<(year(current_date)%100+1),0,19,20)||dt%100||substr(dt,1,4),'YYYYMMDD') as "newdate" from D1.dttest; Thank You!!! image
  • Thanks for your quick response... I have tweaked your SQL as follows... select dt "rawDt", to_date(dt,'mmddyy') "toDt", decode(dt % 100 < 14, 0, 19, 20) "century", dt % 100 "year", date(decode(dt % 100 < 14, 0, 19, 20) || dt % 100 || dt // 100) "dandt", date(decode(dt % 100<(year(current_date)%100+1),0,19,20)||dt%100||substr(dt,1,4)) as dandt2, to_date(decode(dt % 100<(year(current_date)%100+1),0,19,20)||dt%100||substr(dt,1,4),'YYYYMMDD') as "newdate" from D1.dttest; image
  • Thanks for your quick response.... I have tweaked your query as follows... select dt "rawDt", to_date(dt,'mmddyy') "toDt", decode(dt % 100 < 14, 0, 19, 20) "century", dt % 100 "year", date(decode(dt % 100 < 14, 0, 19, 20) || dt % 100 || dt // 100) "dandt", date(decode(dt % 100<(year(current_date)%100+1),0,19,20)||dt%100||substr(dt,1,4)) as dandt2, to_date(decode(dt % 100<(year(current_date)%100+1),0,19,20)||dt%100||substr(dt,1,4),'YYYYMMDD') as "newdate" from D1.dttest; rawDt | toDt | century | year | dandt | dandt2 | newdate --------+------------+---------+------+------------+------------+------------ 030292 | 1992-03-02 | 19 | 92 | | 1992-03-02 | 1992-03-02 081013 | 2013-08-10 | 20 | 13 | | 2013-08-10 | 2013-08-10 050847 | 2047-05-08 | 19 | 47 | | 1947-05-08 | 1947-05-08 030270 | 1970-03-02 | 19 | 70 | | 1970-03-02 | 1970-03-02 110813 | 2013-11-08 | 20 | 13 | 2013-11-08 | 2013-11-08 | 2013-11-08 040229 | 2029-04-02 | 19 | 29 | | 1929-04-02 | 1929-04-02 010756 | 2056-01-07 | 19 | 56 | | 1956-01-07 | 1956-01-07 030328 | 2028-03-03 | 19 | 28 | | 1928-03-03 | 1928-03-03 122683 | 1983-12-26 | 19 | 83 | 1983-12-26 | 1983-12-26 | 1983-12-26 040328 | 2028-04-03 | 19 | 28 | | 1928-04-03 | 1928-04-03 123051 | 2051-12-30 | 19 | 51 | 1951-12-30 | 1951-12-30 | 1951-12-30 000820 | 2020-01-08 | 19 | 20 | | | 1920-01-08 080328 | 2028-08-03 | 19 | 28 | | 1928-08-03 | 1928-08-03 (13 rows) Time: First fetch (13 rows): 56.604 ms. All rows formatted: 57.989 ms Thanks !!!

Leave a Comment

BoldItalicStrikethroughOrdered listUnordered list
Emoji
Image
Align leftAlign centerAlign rightToggle HTML viewToggle full pageToggle lights
Drop image/file