Convert text field to date format

I need to convert a text field to a date field. I have tried magic ETL which didn't work. I also created a redshift using a case statement "cast(week_end as DATE) as week_end" , which resulted in a sytax error "invalid operation: error converting text to date". any ideas??

Thanks!

Best Answers

  • PodiumMason
    PodiumMason Contributor
    Answer ✓

    Hey @debbie_a,

     

    In beast mode you can use the STR_TO_DATE() function to convert your string to date. 

     

    However it sounds like you might have some bad data in your column if the CAST function is erroring out, you may want to check the distinct values of the date column for any odd characters or strange values.

     

    See https://dev.mysql.com/doc/refman/8.0/en/date-and-time-functions.html#function_str-to-date for instructions on how to use the STR_TO_DATE function.

     

    Hope this is helpful!

    **Say 'Thanks' by clicking the thumbs up in the post that helped you.
    **Please mark the post that solves your problem as 'Accepted Solution'
  • ST_Superman
    ST_Superman Domo Employee
    Answer ✓

    if you are using redshift, you can use TO_DATE(`string`, format)

     

    example:

    select to_date ('02 Oct 2001', 'DD Mon YYYY');

  • debbie_a
    debbie_a Member
    Answer ✓

    After I found the bad data in a row, the to_date worked as the final step to convert the data type. thanks!

Answers

  • PodiumMason
    PodiumMason Contributor
    Answer ✓

    Hey @debbie_a,

     

    In beast mode you can use the STR_TO_DATE() function to convert your string to date. 

     

    However it sounds like you might have some bad data in your column if the CAST function is erroring out, you may want to check the distinct values of the date column for any odd characters or strange values.

     

    See https://dev.mysql.com/doc/refman/8.0/en/date-and-time-functions.html#function_str-to-date for instructions on how to use the STR_TO_DATE function.

     

    Hope this is helpful!

    **Say 'Thanks' by clicking the thumbs up in the post that helped you.
    **Please mark the post that solves your problem as 'Accepted Solution'
  • ST_Superman
    ST_Superman Domo Employee
    Answer ✓

    if you are using redshift, you can use TO_DATE(`string`, format)

     

    example:

    select to_date ('02 Oct 2001', 'DD Mon YYYY');

  • I did find some bad data, so you were correct on that call out!! thank you

  • Thanks. After finding the bad data that in a row, the to_date worked as the final step to solve the conversion issue!

  • debbie_a
    debbie_a Member
    Answer ✓

    After I found the bad data in a row, the to_date worked as the final step to convert the data type. thanks!