KDB: convert millisecond epoc to date





.everyoneloves__top-leaderboard:empty,.everyoneloves__mid-leaderboard:empty,.everyoneloves__bot-mid-leaderboard:empty{ height:90px;width:728px;box-sizing:border-box;
}







0















I have a table t with a string column tDate.



select tDate from t

tDate
----------
1542776400000
1542776400000
1542776400000
1542776400000
1542776400000
1542776400000
1540958400000
1542776400000
1542776400000
1542776400000
1542776400000


I want to convert this to a string with MM/dd/YYYY format.



but I need to drop the last 3 characters then convert it to date. But somehow, the below statement does not work correctly:



select "P"$-3_tDate from t


How is this wrong and how do I translate it to the "MM/dd/YYYY" string.










share|improve this question





























    0















    I have a table t with a string column tDate.



    select tDate from t

    tDate
    ----------
    1542776400000
    1542776400000
    1542776400000
    1542776400000
    1542776400000
    1542776400000
    1540958400000
    1542776400000
    1542776400000
    1542776400000
    1542776400000


    I want to convert this to a string with MM/dd/YYYY format.



    but I need to drop the last 3 characters then convert it to date. But somehow, the below statement does not work correctly:



    select "P"$-3_tDate from t


    How is this wrong and how do I translate it to the "MM/dd/YYYY" string.










    share|improve this question

























      0












      0








      0








      I have a table t with a string column tDate.



      select tDate from t

      tDate
      ----------
      1542776400000
      1542776400000
      1542776400000
      1542776400000
      1542776400000
      1542776400000
      1540958400000
      1542776400000
      1542776400000
      1542776400000
      1542776400000


      I want to convert this to a string with MM/dd/YYYY format.



      but I need to drop the last 3 characters then convert it to date. But somehow, the below statement does not work correctly:



      select "P"$-3_tDate from t


      How is this wrong and how do I translate it to the "MM/dd/YYYY" string.










      share|improve this question














      I have a table t with a string column tDate.



      select tDate from t

      tDate
      ----------
      1542776400000
      1542776400000
      1542776400000
      1542776400000
      1542776400000
      1542776400000
      1540958400000
      1542776400000
      1542776400000
      1542776400000
      1542776400000


      I want to convert this to a string with MM/dd/YYYY format.



      but I need to drop the last 3 characters then convert it to date. But somehow, the below statement does not work correctly:



      select "P"$-3_tDate from t


      How is this wrong and how do I translate it to the "MM/dd/YYYY" string.







      kdb






      share|improve this question













      share|improve this question











      share|improve this question




      share|improve this question










      asked Nov 23 '18 at 20:37









      user3682563user3682563

      936




      936
























          2 Answers
          2






          active

          oldest

          votes


















          1














          Here's how I would go about this:




          • Convert to string type using string - https://code.kx.com/q/ref/casting/#string

          • Pad the strings to count of 10 using $ - https://code.kx.com/q/ref/strings/#pad

          • Convert to a timestamp type with cast using type p - "P"$

          • Convert that to the necessary temporal types using `mm`dd`year - https://code.kx.com/q/ref/casting/#cast

          • Format with zero-colon - https://code.kx.com/q/ref/filenumbers/#prepare-text


          ````



          q)t:(10#1542776400000)
          q)select "/"0:`mm`dd`year$:"P"$10$string x from t
          x
          ------------
          "11/21/2018"
          "11/21/2018"
          "11/21/2018"


          ````






          share|improve this answer































            0














            You need to first convert the long values to string :



            q)select `date$"P"$-3_/:string tDate from t
            tDate
            ----------
            2018.11.23
            2018.11.21
            2018.11.21


            Converting the date to "MM/dd/YYYY" format can be done by:



            q)f:{ d:"." vs x; "/" sv (d 1;d 2;d 0)}
            q)select f each string `date$"P"$-3_/:string tDate from t
            tDate
            ------------
            "11/23/2018"
            "11/21/2018"
            "11/21/2018"
            "11/21/2018"


            If you are interested in any other format then you have to manipulate the string be defining a custom function like f above.



            Or you can explore datetimeQ GitHub library which supports the excel style formatting.



            e.g.



            q).dtf.format["d mmmm, dddd ,yyyy"; 2018.06.18];
            "18 June, Tuesday ,2018"





            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%2f53452697%2fkdb-convert-millisecond-epoc-to-date%23new-answer', 'question_page');
              }
              );

              Post as a guest















              Required, but never shown

























              2 Answers
              2






              active

              oldest

              votes








              2 Answers
              2






              active

              oldest

              votes









              active

              oldest

              votes






              active

              oldest

              votes









              1














              Here's how I would go about this:




              • Convert to string type using string - https://code.kx.com/q/ref/casting/#string

              • Pad the strings to count of 10 using $ - https://code.kx.com/q/ref/strings/#pad

              • Convert to a timestamp type with cast using type p - "P"$

              • Convert that to the necessary temporal types using `mm`dd`year - https://code.kx.com/q/ref/casting/#cast

              • Format with zero-colon - https://code.kx.com/q/ref/filenumbers/#prepare-text


              ````



              q)t:(10#1542776400000)
              q)select "/"0:`mm`dd`year$:"P"$10$string x from t
              x
              ------------
              "11/21/2018"
              "11/21/2018"
              "11/21/2018"


              ````






              share|improve this answer




























                1














                Here's how I would go about this:




                • Convert to string type using string - https://code.kx.com/q/ref/casting/#string

                • Pad the strings to count of 10 using $ - https://code.kx.com/q/ref/strings/#pad

                • Convert to a timestamp type with cast using type p - "P"$

                • Convert that to the necessary temporal types using `mm`dd`year - https://code.kx.com/q/ref/casting/#cast

                • Format with zero-colon - https://code.kx.com/q/ref/filenumbers/#prepare-text


                ````



                q)t:(10#1542776400000)
                q)select "/"0:`mm`dd`year$:"P"$10$string x from t
                x
                ------------
                "11/21/2018"
                "11/21/2018"
                "11/21/2018"


                ````






                share|improve this answer


























                  1












                  1








                  1







                  Here's how I would go about this:




                  • Convert to string type using string - https://code.kx.com/q/ref/casting/#string

                  • Pad the strings to count of 10 using $ - https://code.kx.com/q/ref/strings/#pad

                  • Convert to a timestamp type with cast using type p - "P"$

                  • Convert that to the necessary temporal types using `mm`dd`year - https://code.kx.com/q/ref/casting/#cast

                  • Format with zero-colon - https://code.kx.com/q/ref/filenumbers/#prepare-text


                  ````



                  q)t:(10#1542776400000)
                  q)select "/"0:`mm`dd`year$:"P"$10$string x from t
                  x
                  ------------
                  "11/21/2018"
                  "11/21/2018"
                  "11/21/2018"


                  ````






                  share|improve this answer













                  Here's how I would go about this:




                  • Convert to string type using string - https://code.kx.com/q/ref/casting/#string

                  • Pad the strings to count of 10 using $ - https://code.kx.com/q/ref/strings/#pad

                  • Convert to a timestamp type with cast using type p - "P"$

                  • Convert that to the necessary temporal types using `mm`dd`year - https://code.kx.com/q/ref/casting/#cast

                  • Format with zero-colon - https://code.kx.com/q/ref/filenumbers/#prepare-text


                  ````



                  q)t:(10#1542776400000)
                  q)select "/"0:`mm`dd`year$:"P"$10$string x from t
                  x
                  ------------
                  "11/21/2018"
                  "11/21/2018"
                  "11/21/2018"


                  ````







                  share|improve this answer












                  share|improve this answer



                  share|improve this answer










                  answered Nov 24 '18 at 11:32









                  Sean O'HaganSean O'Hagan

                  1,223411




                  1,223411

























                      0














                      You need to first convert the long values to string :



                      q)select `date$"P"$-3_/:string tDate from t
                      tDate
                      ----------
                      2018.11.23
                      2018.11.21
                      2018.11.21


                      Converting the date to "MM/dd/YYYY" format can be done by:



                      q)f:{ d:"." vs x; "/" sv (d 1;d 2;d 0)}
                      q)select f each string `date$"P"$-3_/:string tDate from t
                      tDate
                      ------------
                      "11/23/2018"
                      "11/21/2018"
                      "11/21/2018"
                      "11/21/2018"


                      If you are interested in any other format then you have to manipulate the string be defining a custom function like f above.



                      Or you can explore datetimeQ GitHub library which supports the excel style formatting.



                      e.g.



                      q).dtf.format["d mmmm, dddd ,yyyy"; 2018.06.18];
                      "18 June, Tuesday ,2018"





                      share|improve this answer






























                        0














                        You need to first convert the long values to string :



                        q)select `date$"P"$-3_/:string tDate from t
                        tDate
                        ----------
                        2018.11.23
                        2018.11.21
                        2018.11.21


                        Converting the date to "MM/dd/YYYY" format can be done by:



                        q)f:{ d:"." vs x; "/" sv (d 1;d 2;d 0)}
                        q)select f each string `date$"P"$-3_/:string tDate from t
                        tDate
                        ------------
                        "11/23/2018"
                        "11/21/2018"
                        "11/21/2018"
                        "11/21/2018"


                        If you are interested in any other format then you have to manipulate the string be defining a custom function like f above.



                        Or you can explore datetimeQ GitHub library which supports the excel style formatting.



                        e.g.



                        q).dtf.format["d mmmm, dddd ,yyyy"; 2018.06.18];
                        "18 June, Tuesday ,2018"





                        share|improve this answer




























                          0












                          0








                          0







                          You need to first convert the long values to string :



                          q)select `date$"P"$-3_/:string tDate from t
                          tDate
                          ----------
                          2018.11.23
                          2018.11.21
                          2018.11.21


                          Converting the date to "MM/dd/YYYY" format can be done by:



                          q)f:{ d:"." vs x; "/" sv (d 1;d 2;d 0)}
                          q)select f each string `date$"P"$-3_/:string tDate from t
                          tDate
                          ------------
                          "11/23/2018"
                          "11/21/2018"
                          "11/21/2018"
                          "11/21/2018"


                          If you are interested in any other format then you have to manipulate the string be defining a custom function like f above.



                          Or you can explore datetimeQ GitHub library which supports the excel style formatting.



                          e.g.



                          q).dtf.format["d mmmm, dddd ,yyyy"; 2018.06.18];
                          "18 June, Tuesday ,2018"





                          share|improve this answer















                          You need to first convert the long values to string :



                          q)select `date$"P"$-3_/:string tDate from t
                          tDate
                          ----------
                          2018.11.23
                          2018.11.21
                          2018.11.21


                          Converting the date to "MM/dd/YYYY" format can be done by:



                          q)f:{ d:"." vs x; "/" sv (d 1;d 2;d 0)}
                          q)select f each string `date$"P"$-3_/:string tDate from t
                          tDate
                          ------------
                          "11/23/2018"
                          "11/21/2018"
                          "11/21/2018"
                          "11/21/2018"


                          If you are interested in any other format then you have to manipulate the string be defining a custom function like f above.



                          Or you can explore datetimeQ GitHub library which supports the excel style formatting.



                          e.g.



                          q).dtf.format["d mmmm, dddd ,yyyy"; 2018.06.18];
                          "18 June, Tuesday ,2018"






                          share|improve this answer














                          share|improve this answer



                          share|improve this answer








                          edited Nov 23 '18 at 21:20

























                          answered Nov 23 '18 at 20:58









                          nyinyi

                          2,37931537




                          2,37931537






























                              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%2f53452697%2fkdb-convert-millisecond-epoc-to-date%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

                              If I really need a card on my start hand, how many mulligans make sense? [duplicate]

                              Alcedinidae

                              Can an atomic nucleus contain both particles and antiparticles? [duplicate]