Sto provando a creare un grafico di una serie storica con DateListPlot
. Voglio dargli da mangiare una serie temporale che ottengo da un database SQL. Quando recupero le serie temporali, la lista è composta da SQLDateTime
voci che DateListPlot
non comprendono.Come estrarre una data da un oggetto SQLDateTime in Mathematica
In[24]:= t=SQLExecute[conn, "select timestamp,value from timeseries order by timestamp asc"]
Out[24]={{SQLDateTime[{2010,1,1}],12.3},{SQLDateTime[{2010,1,2}],12.51}}
non funziona: In[25]:= DateListPlot[t]
DateListPlot
richiede una data tupla e non capisce SqlDateTime. Cosa posso fare?
Potrebbe essere più efficiente e chiaro per fare qualcosa di simile SQLExecute [...]/'. SQLDateTime [l _]:> l' o 'SQLExecute [...] /. SQLDateTime -> Identity' quando ci sono più colonne di oggetti 'SQLDateTime'. Inoltre, 'DateListPlot' comprende interi timestamp in stile Unix, quindi è possibile sostituire' SQLDateTime' con 'AbsoluteTime' per convertirli in quelli, dato che' AbsoluteTime [{timespec ...}] 'fornisce un timestamp. –
Queste sono ottime risposte. Grazie, Jefromi e Michael! – andrewz
Sì, l'ho chiamato veloce e sporco. L'utilizzo di una regola è decisamente più chiaro e più efficiente in termini di quantità di codice. Non sono sicuro che una regola sia, in generale, più veloce, perché deve cercare in tutto, mentre se conosci la struttura dei tuoi dati, puoi usare qualcosa di simile che non deve esaminare altro che i luoghi sai che SQLDateTime si verifica. – Cascabel