Q Sprache - Zeitdaten
Das q Sprache hat viele verschiedene Möglichkeiten, zeitliche Daten wie Zeiten und Daten darzustellen und zu bearbeiten.
Datum
Ein Datum in kdb + wird intern als ganzzahlige Anzahl von Tagen seit unserem Referenzdatum 01Jan2000 gespeichert. Ein Datum nach diesem Datum wird intern als positive Zahl gespeichert, und ein Datum davor wird als negative Zahl bezeichnet.
Standardmäßig wird ein Datum im Format „JJJY.MM.TT“ geschrieben.
q)x:2015.01.22 / This is how we write 22nd Jan 2015
q)`int$x / Number of days since 2000.01.01
5500i
q)`year$x / Extracting year from the date
2015i
q)x.year / Another way of extracting year
2015i
q)`mm$x / Extracting month from the date
1i
q)x.mm / Another way of extracting month
1i
q)`dd$x / Extracting day from the date
22i
q)x.dd / Another way of extracting day
22i
Arithmetic and logical operations kann direkt an Terminen durchgeführt werden.
q)x+1 / Add one day
2015.01.23
q)x-7 / Subtract 7 days
2015.01.15
Der 1. Januar 2000 fiel auf einen Samstag. Daher würde jeder Samstag in der Geschichte oder in der Zukunft, wenn er durch 7 geteilt wird, einen Rest von 0 ergeben, Sonntag ergibt 1, Montag ergibt 2.
Day mod 7
Saturday 0
Sunday 1
Monday 2
Tuesday 3
Wednesday 4
Thursday 5
Friday 6
Mal
Eine Zeit wird intern als ganzzahlige Anzahl von Millisekunden seit dem Mitternachtsstrich gespeichert. Eine Zeit wird im Format HH: MM: SS.MSS geschrieben
q)tt1: 03:30:00.000 / tt1 store the time 03:30 AM
q)tt1
03:30:00.000
q)`int$tt1 / Number of milliseconds in 3.5 hours
12600000i
q)`hh$tt1 / Extract the hour component from time
3i
q)tt1.hh
3i
q)`mm$tt1 / Extract the minute component from time
30i
q)tt1.mm
30i
q)`ss$tt1 / Extract the second component from time
0i
q)tt1.ss
0i
Wie bei Datumsangaben kann die Arithmetik direkt zu bestimmten Zeiten ausgeführt werden.
Datetimes
Eine Datums- / Uhrzeitangabe ist die Kombination aus Datum und Uhrzeit, die wie im ISO-Standardformat durch 'T' getrennt sind. Ein Datum / Uhrzeit-Wert speichert die Anzahl der gebrochenen Tage ab dem 1. Januar 2000, Mitternacht.
q)dt:2012.12.20T04:54:59:000 / 04:54.59 AM on 20thDec2012
q)type dt
-15h
q)dt
2012.12.20T04:54:59.000
9
q)`float$dt
4737.205
Die zugrunde liegende gebrochene Tageszahl kann durch Gießen zum Schweben erhalten werden.