Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

KDB string to kdb `timestamp`

Tags:

kdb+

kdb mortals/gods!!

I have an array of datetime string but in a different format

> leads[`firstConversion]
"Wed May 20 2020 08:56:54 GMT-0700 (PDT)"
"Wed May 20 2020 08:56:56 GMT-0700 (PDT)"
"Wed May 20 2020 08:56:56 GMT-0700 (PDT)"
"Wed May 20 2020 08:56:56 GMT-0700 (PDT)"
"Wed May 20 2020 08:56:57 GMT-0700 (PDT)"
"Wed May 20 2020 08:56:58 GMT-0700 (PDT)"
"Wed May 20 2020 08:56:58 GMT-0700 (PDT)"
"Wed May 20 2020 08:56:59 GMT-0700 (PDT)"
"Wed May 20 2020 08:57:00 GMT-0700 (PDT)"
"Wed May 20 2020 08:57:01 GMT-0700 (PDT)"
"Wed May 20 2020 09:06:32 GMT-0700 (PDT)"
"Wed May 20 2020 09:06:32 GMT-0700 (PDT)"
"Wed May 20 2020 09:06:33 GMT-0700 (PDT)"
"Wed May 20 2020 09:06:33 GMT-0700 (PDT)"
"Wed May 20 2020 09:06:35 GMT-0700 (PDT)"
"Wed May 20 2020 09:06:35 GMT-0700 (PDT)"
"Wed May 20 2020 09:07:07 GMT-0700 (PDT)"
"Wed May 20 2020 09:07:09 GMT-0700 (PDT)"
"Wed May 20 2020 09:07:09 GMT-0700 (PDT)"
"Wed May 20 2020 09:07:10 GMT-0700 (PDT)"

what would be the best way to convert them into native kdb timestamp 2020.05.20D09:07:10.0000?

like image 601
ppatel26 Avatar asked Sep 01 '25 20:09

ppatel26


2 Answers

Depending on how predictable/consistent the indices of the relevant part of each string is.. something like the below

q)x!"P"$4_'x
"Wed May 20 2020 08:56:54 GMT-0700 (PDT)"| 2020.05.20D08:56:54.000000000
"Wed May 20 2020 08:56:56 GMT-0700 (PDT)"| 2020.05.20D08:56:56.000000000
"Wed May 20 2020 08:56:56 GMT-0700 (PDT)"| 2020.05.20D08:56:56.000000000
"Wed May 20 2020 08:56:56 GMT-0700 (PDT)"| 2020.05.20D08:56:56.000000000
"Wed May 20 2020 08:56:57 GMT-0700 (PDT)"| 2020.05.20D08:56:57.000000000
q)
q)// or
q)
q)i:4+til -4+count first x
q)x!"P"$x[;i]
"Wed May 20 2020 08:56:54 GMT-0700 (PDT)"| 2020.05.20D08:56:54.000000000
"Wed May 20 2020 08:56:56 GMT-0700 (PDT)"| 2020.05.20D08:56:56.000000000
"Wed May 20 2020 08:56:56 GMT-0700 (PDT)"| 2020.05.20D08:56:56.000000000
"Wed May 20 2020 08:56:56 GMT-0700 (PDT)"| 2020.05.20D08:56:56.000000000
"Wed May 20 2020 08:56:57 GMT-0700 (PDT)"| 2020.05.20D08:56:57.000000000
q)
q)x:2000000#x
q)
q)\ts "P"$4_'x
495 161554832
q)\ts "P"$x[;i]
538 161554768
like image 79
jasonfealy Avatar answered Sep 15 '25 13:09

jasonfealy


You could use the .qdate library https://code.kx.com/developer/libraries/date-parser/

It can parse to UTC or leave in original timezone:

q).qdate.resolve["%a %b %d %Y %T    %z"] "Wed May 20 2020 09:07:10 GMT-0700 (PDT)"
2020.05.20D16:07:10.000000000
q).qdate.resolve["%a %b %d %Y %T"] "Wed May 20 2020 09:07:10 GMT-0700 (PDT)"
2020.05.20D09:07:10.000000000
like image 32
rianoc Avatar answered Sep 15 '25 14:09

rianoc