Converting string with nano seconds to timestamp












0















Im trying to convert String Datatype to Timestamp data type but Im getting NONE as a result



Sample Data and Code



20181016T192403.635918+02:00

date_format = "yyyyMMdd'T'HHmmss.SSSSSSZ”
data_frame = data_frame.withColumn('dob_ts', unix_timestamp('dob', date_format).cast(‘timestamp’)


Other formats (yyyyMMdd'T'HHmmss.SSS) works fine but not this one.

How to convert this format to timestamp?










share|improve this question





























    0















    Im trying to convert String Datatype to Timestamp data type but Im getting NONE as a result



    Sample Data and Code



    20181016T192403.635918+02:00

    date_format = "yyyyMMdd'T'HHmmss.SSSSSSZ”
    data_frame = data_frame.withColumn('dob_ts', unix_timestamp('dob', date_format).cast(‘timestamp’)


    Other formats (yyyyMMdd'T'HHmmss.SSS) works fine but not this one.

    How to convert this format to timestamp?










    share|improve this question



























      0












      0








      0


      1






      Im trying to convert String Datatype to Timestamp data type but Im getting NONE as a result



      Sample Data and Code



      20181016T192403.635918+02:00

      date_format = "yyyyMMdd'T'HHmmss.SSSSSSZ”
      data_frame = data_frame.withColumn('dob_ts', unix_timestamp('dob', date_format).cast(‘timestamp’)


      Other formats (yyyyMMdd'T'HHmmss.SSS) works fine but not this one.

      How to convert this format to timestamp?










      share|improve this question
















      Im trying to convert String Datatype to Timestamp data type but Im getting NONE as a result



      Sample Data and Code



      20181016T192403.635918+02:00

      date_format = "yyyyMMdd'T'HHmmss.SSSSSSZ”
      data_frame = data_frame.withColumn('dob_ts', unix_timestamp('dob', date_format).cast(‘timestamp’)


      Other formats (yyyyMMdd'T'HHmmss.SSS) works fine but not this one.

      How to convert this format to timestamp?







      apache-spark pyspark timestamp unix-timestamp






      share|improve this question















      share|improve this question













      share|improve this question




      share|improve this question








      edited Jan 2 at 9:57









      Yaron

      5,70762842




      5,70762842










      asked Jan 2 at 9:50









      syvsyv

      1,31351628




      1,31351628
























          1 Answer
          1






          active

          oldest

          votes


















          0














          You can using udf to define your function. Hence, in the user defined function you can handle this case by an if or what you want:



          from pyspark.sql.functions import udf 
          from datetime import datetime
          from pyspark.sql.types import TimestampType

          def date_time_to_date(input_date_time):
          split_ind = input_date_time.find('T')
          new_date = input_date_time
          if split_ind > -1:
          new_date = input_date_time[:split_ind] + input_date_time[split_ind + 1:]
          return datetime.strptime(input_date_time, '%Y%m%d %H%M%S.%f')

          udf_date_time_to_date = udf(new_date, TimestampType())

          data_frame = data_frame.withColumn('dob_ts', udf_date_time_to_date('dob'))





          share|improve this answer

























            Your Answer






            StackExchange.ifUsing("editor", function () {
            StackExchange.using("externalEditor", function () {
            StackExchange.using("snippets", function () {
            StackExchange.snippets.init();
            });
            });
            }, "code-snippets");

            StackExchange.ready(function() {
            var channelOptions = {
            tags: "".split(" "),
            id: "1"
            };
            initTagRenderer("".split(" "), "".split(" "), channelOptions);

            StackExchange.using("externalEditor", function() {
            // Have to fire editor after snippets, if snippets enabled
            if (StackExchange.settings.snippets.snippetsEnabled) {
            StackExchange.using("snippets", function() {
            createEditor();
            });
            }
            else {
            createEditor();
            }
            });

            function createEditor() {
            StackExchange.prepareEditor({
            heartbeatType: 'answer',
            autoActivateHeartbeat: false,
            convertImagesToLinks: true,
            noModals: true,
            showLowRepImageUploadWarning: true,
            reputationToPostImages: 10,
            bindNavPrevention: true,
            postfix: "",
            imageUploader: {
            brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
            contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
            allowUrls: true
            },
            onDemand: true,
            discardSelector: ".discard-answer"
            ,immediatelyShowMarkdownHelp:true
            });


            }
            });














            draft saved

            draft discarded


















            StackExchange.ready(
            function () {
            StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f54004197%2fconverting-string-with-nano-seconds-to-timestamp%23new-answer', 'question_page');
            }
            );

            Post as a guest















            Required, but never shown

























            1 Answer
            1






            active

            oldest

            votes








            1 Answer
            1






            active

            oldest

            votes









            active

            oldest

            votes






            active

            oldest

            votes









            0














            You can using udf to define your function. Hence, in the user defined function you can handle this case by an if or what you want:



            from pyspark.sql.functions import udf 
            from datetime import datetime
            from pyspark.sql.types import TimestampType

            def date_time_to_date(input_date_time):
            split_ind = input_date_time.find('T')
            new_date = input_date_time
            if split_ind > -1:
            new_date = input_date_time[:split_ind] + input_date_time[split_ind + 1:]
            return datetime.strptime(input_date_time, '%Y%m%d %H%M%S.%f')

            udf_date_time_to_date = udf(new_date, TimestampType())

            data_frame = data_frame.withColumn('dob_ts', udf_date_time_to_date('dob'))





            share|improve this answer






























              0














              You can using udf to define your function. Hence, in the user defined function you can handle this case by an if or what you want:



              from pyspark.sql.functions import udf 
              from datetime import datetime
              from pyspark.sql.types import TimestampType

              def date_time_to_date(input_date_time):
              split_ind = input_date_time.find('T')
              new_date = input_date_time
              if split_ind > -1:
              new_date = input_date_time[:split_ind] + input_date_time[split_ind + 1:]
              return datetime.strptime(input_date_time, '%Y%m%d %H%M%S.%f')

              udf_date_time_to_date = udf(new_date, TimestampType())

              data_frame = data_frame.withColumn('dob_ts', udf_date_time_to_date('dob'))





              share|improve this answer




























                0












                0








                0







                You can using udf to define your function. Hence, in the user defined function you can handle this case by an if or what you want:



                from pyspark.sql.functions import udf 
                from datetime import datetime
                from pyspark.sql.types import TimestampType

                def date_time_to_date(input_date_time):
                split_ind = input_date_time.find('T')
                new_date = input_date_time
                if split_ind > -1:
                new_date = input_date_time[:split_ind] + input_date_time[split_ind + 1:]
                return datetime.strptime(input_date_time, '%Y%m%d %H%M%S.%f')

                udf_date_time_to_date = udf(new_date, TimestampType())

                data_frame = data_frame.withColumn('dob_ts', udf_date_time_to_date('dob'))





                share|improve this answer















                You can using udf to define your function. Hence, in the user defined function you can handle this case by an if or what you want:



                from pyspark.sql.functions import udf 
                from datetime import datetime
                from pyspark.sql.types import TimestampType

                def date_time_to_date(input_date_time):
                split_ind = input_date_time.find('T')
                new_date = input_date_time
                if split_ind > -1:
                new_date = input_date_time[:split_ind] + input_date_time[split_ind + 1:]
                return datetime.strptime(input_date_time, '%Y%m%d %H%M%S.%f')

                udf_date_time_to_date = udf(new_date, TimestampType())

                data_frame = data_frame.withColumn('dob_ts', udf_date_time_to_date('dob'))






                share|improve this answer














                share|improve this answer



                share|improve this answer








                edited Jan 2 at 10:10

























                answered Jan 2 at 10:01









                OmGOmG

                8,47153047




                8,47153047
































                    draft saved

                    draft discarded




















































                    Thanks for contributing an answer to Stack Overflow!


                    • Please be sure to answer the question. Provide details and share your research!

                    But avoid



                    • Asking for help, clarification, or responding to other answers.

                    • Making statements based on opinion; back them up with references or personal experience.


                    To learn more, see our tips on writing great answers.




                    draft saved


                    draft discarded














                    StackExchange.ready(
                    function () {
                    StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f54004197%2fconverting-string-with-nano-seconds-to-timestamp%23new-answer', 'question_page');
                    }
                    );

                    Post as a guest















                    Required, but never shown





















































                    Required, but never shown














                    Required, but never shown












                    Required, but never shown







                    Required, but never shown

































                    Required, but never shown














                    Required, but never shown












                    Required, but never shown







                    Required, but never shown







                    Popular posts from this blog

                    MongoDB - Not Authorized To Execute Command

                    How to fix TextFormField cause rebuild widget in Flutter

                    in spring boot 2.1 many test slices are not allowed anymore due to multiple @BootstrapWith