首页 > 解决方案 > 如何使用 oledb 查询从 datediff 函数中获取所有值并且已导入来自 excel 文件的数据

问题描述

我想显示 excel 中的所有值,使用oledb query datediff哪个值将使用来自该条件的数据date createdlast login < 20显示该条件下的所有值,但我在使用 datediff 查询时遇到了问题。我不知道如何使用 Excel 数据值使用 datediff 查询。有谁能够帮助我?

这是代码:

dta = New OleDbDataAdapter("select * from [Sheet1$] WHERE
   datediff(FORMAT([Last Login Date], 'dd/mm/yyyy'),FORMAT([Last Login
   Date], 'dd/mm/yyyy')) > 20", conn)

标签: vb.net

解决方案


你说你的新代码是:

dta = New OleDbDataAdapter("select * from [Sheet1$] WHERE datediff(day,[Last Login Date],[Date Active / Create Date]) > 90", conn)

根据您应该使用的规范,d而不是day调用的第一个参数值DateDiff

你应该把它放在引号内,所以"d"不要只是d.

但是要在 VB.NET 中的字符串变量中使用引号,您应该将引号加倍。像这样:""d""

所以你可以试试这个:

dta = New OleDbDataAdapter("select * from [Sheet1$] WHERE datediff(""d"",[Last Login Date],[Date Active / Create Date]) > 90", conn)

这对你有用吗?

编辑:还要标记@CharlesMay 关于切换日期字段以获得正值的评论。

编辑2:

由于您是通过来自 VB.NET 的 OleDb 连接执行此查询,因此您可能需要在查询中使用单引号。

dta = New OleDbDataAdapter("select * from [Sheet1$] WHERE datediff('d',[Last Login Date],[Date Active / Create Date]) > 90", conn)

不过,我不确定。我目前无法对其进行测试。这些都只是建议。


推荐阅读