我在表中有以下记录,第3列是sqlite中的Datetime类型。
sqlite> .schema candlestick
CREATE TABLE "Candlestick" (
"id" INTEGER PRIMARY KEY AUTOINCREMENT,
"timeframe" TEXT NOT NULL,
"timestamp" DATETIME NOT NULL,
"open" DECIMAL(12, 6) NOT NULL,
"high" DECIMAL(12, 6) NOT NULL,
"low" DECIMAL(12, 6) NOT NULL,
"close" DECIMAL(12, 6) NOT NULL,
"volume" DECIMAL(12, 6) NOT NULL
);
sqlite> select * from candlestick limit 10;
3668401|Europe/Berlin|1999-12-14 08:02:00+01:00|6183|6183|6183|6183|1
3668402|Europe/Berlin|1999-12-14 08:03:00+01:00|6180.5|6183|6180.5|6181|133
3668403|Europe/Berlin|1999-12-14 08:04:00+01:00|6181.5|6187.5|6181.5|6187.5|55
3668404|Europe/Berlin|1999-12-14 08:05:00+01:00|6186|6186|6184.5|6185|166
3668405|Europe/Berlin|1999-12-14 08:06:00+01:00|6182|6184.5|6180.5|6181|31
3668406|Europe/Berlin|1999-12-14 08:07:00+01:00|6181|6181|6175.5|6176|62
3668407|Europe/Berlin|1999-12-14 08:10:00+01:00|6174.5|6174.5|6174.5|6174.5|2
3668408|Europe/Berlin|1999-12-14 08:11:00+01:00|6176.5|6177|6176|6177|7
3668409|Europe/Berlin|1999-12-14 08:13:00+01:00|6174|6174|6174|6174|23
3668410|Europe/Berlin|1999-12-14 08:15:00+01:00|6174|6174|6173|6173|133
如何从所有寄存器中选择一个给定的日期(例如1999-12-15
)?即无论何时,所有属于该日的寄存器。
答案 0 :(得分:2)
一种简单的方法是使用不平等:
List<DataResource> myData = makeData();
JRBeanCollectionDataSource tableDataSource = new JRBeanCollectionDataSource(myData);
Map<String, Object> localParameters = new HashMap<>();
localParameters.put("tableDataSource", tableDataSource);
JasperPrint fillReport = JasperFillManager.fillReport(jasperReport, localParameters,new JREmptyDataSource());
JasperExportManager.exportReportToPdfStream(fillReport, output);
此公式允许SQLite使用索引来检索值-如果有合适的索引可用。
SQLite还具有where timestamp >= '1999-12-15' and
timestamp < '1999-12-16'
函数(实际上是所有SQLite日期/时间函数的基础date()
)。所以你也可以这样写:
strftime()
答案 1 :(得分:1)