Как извлечь Date из объекта SQLDateTime в Mathematica - PullRequest
5 голосов
/ 18 марта 2010

Я пытаюсь сделать сюжет временного ряда с DateListPlot. Я хочу скормить ему временной ряд, полученный из базы данных SQL. Когда я получаю временной ряд, список состоит из SQLDateTime записей, которые DateListPlot не понимает.

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}}

Не работает: In[25]:= DateListPlot[t]

DateListPlot требует кортеж Date и не понимает SQLDateTime. Что я могу сделать?

1 Ответ

7 голосов
/ 18 марта 2010

Ответ:

In[1]:= SQLDateTime[{2001, 5, 7}][[1]]
Out[1]:= {2001,5,7}

Mathematica думает обо всем очень внутренне. То, что вы видите как {1, 2, 3}, на самом деле List[1,2,3]. Функция Part (обозначенная [[...]]) работает так же хорошо для любой функции, а не только для List.

Быстрый и грязный способ применить это в вашем случае:

{#[[1,1]],#[[2]]}& /@ SQLExecute[...]
...