Tôi đang cố gắng làm một âm mưu của một chuỗi thời gian với DateListPlot
. Tôi muốn cho nó một chuỗi thời gian mà tôi có được từ một cơ sở dữ liệu SQL. Khi tôi truy xuất chuỗi thời gian, danh sách bao gồm các mục nhập SQLDateTime
mà DateListPlot
không hiểu.Làm thế nào để trích xuất một ngày từ một đối tượng SQLDateTime trong 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}}
Không làm việc: In[25]:= DateListPlot[t]
DateListPlot
đòi hỏi một ngày tuple và không hiểu SQLDateTime. Tôi có thể làm gì?
Nó có thể là hiệu quả hơn và rõ ràng để làm một cái gì đó như 'SQLExecute [...] /. SQLDateTime [l _]:> l' hoặc 'SQLExecute [...] /. SQLDateTime -> Identity' khi bạn có nhiều cột của các đối tượng 'SQLDateTime'. Ngoài ra, 'DateListPlot' hiểu dấu thời gian kiểu số nguyên Unix, vì vậy bạn có thể thay thế' SQLDateTime' bằng 'AbsoluteTime' để chuyển đổi thành những từ, vì' AbsoluteTime [{timespec ...}] 'cung cấp cho bạn một dấu thời gian. –
Đây là những câu trả lời tuyệt vời. Cảm ơn Jefromi và Michael! – andrewz
Vâng, tôi đã gọi nó nhanh và bẩn. Sử dụng quy tắc chắc chắn rõ ràng hơn và hiệu quả hơn về số lượng mã. Tuy nhiên, tôi không chắc liệu quy tắc có nhanh hơn hay không, bởi vì nó phải tìm kiếm thông qua mọi thứ, trong khi nếu bạn biết cấu trúc dữ liệu của mình, bạn có thể sử dụng một thứ như thế này mà không phải kiểm tra gì ngoại trừ các địa điểm bạn biết SQLDateTime xảy ra. – Cascabel