首页 > 解决方案 > 如何在 sqlite3 脚本中按 date=today 过滤

问题描述

在这里,我有一段代码,其目的是对数据库(主要是 sqlite3 语言)执行查询,然后将结果表导出到自动命名的 csv 文件。

set fch=%date:~11,4%%date:~8,2%%date:~5,2%%time:~0,2%%time:~3,2%%time:~6,2%
sqlite3 -header -csv -cmd ".separator ','" C:\ProgramData\PROISER\ISASPSUS\datastore\dsfile.db "select * from analysis;" > holaa%fch%.xlsx

我的问题是如何在引用的查询中插入一个过滤器以仅显示与实际日期匹配的数据(日期是导出的表的实际字段)

标签: csvbatch-filecmdsqliteexport-to-csv

解决方案


使用strftime()sqlite日期和时间函数之一,将当前日期 ( 'now') 格式化为与数据库中使用的格式相同的格式。在查询的 WHERE 子句中使用它进行比较。

不过,我建议将所有现有值转换为标准 ISO-8601 格式,而不是自己制作。它会让事情变得更容易,既可以与其他软件进行互操作,也可以使用 sqlite 函数和其他内置日期/时间来操作日期。

例如,如果你使用YYYY-MM-DD格式,你可以做

SELECT * FROM foo WHERE date_added = CURRENT_DATE

并完全避免strftime()


推荐阅读