csv - 如何在 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
我的问题是如何在引用的查询中插入一个过滤器以仅显示与实际日期匹配的数据(日期是导出的表的实际字段)
解决方案
使用strftime()
sqlite日期和时间函数之一,将当前日期 ( 'now'
) 格式化为与数据库中使用的格式相同的格式。在查询的 WHERE 子句中使用它进行比较。
不过,我建议将所有现有值转换为标准 ISO-8601 格式,而不是自己制作。它会让事情变得更容易,既可以与其他软件进行互操作,也可以使用 sqlite 函数和其他内置日期/时间来操作日期。
例如,如果你使用YYYY-MM-DD
格式,你可以做
SELECT * FROM foo WHERE date_added = CURRENT_DATE
并完全避免strftime()
。
推荐阅读
- php - 无法使用 curl 或 file_get_contents 在单独的网站上执行命令
- android-layout - 如何实现以下 xml 布局?
- r - 在R中使用ggplot faceting进行地理空间映射?
- ios - 为没有父视图的视图调用“removeFromSuperView”
- java - 如何在 Java 中创建包含数据的对象
- android - 从联系人获取国家代码和手机号码
- create-react-app - 使用 Zeit Now 构建和部署,如何嵌入 Git 提交 SHA?
- python - mysql.connector.errors.InterfaceError: 2003: Can't connect to MySQL server on 'localhost:3306' (111 Connection denied)
- java - 将 minsdk 版本升级到 16 会导致 android 应用程序崩溃
- manim - 用 manim 代替 TeX 取消条款