Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/298.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用涉及日期的PHP对MS Access CSV导出进行SQL查询_Php_Sql_Date_Csv_Ms Access 2010 - Fatal编程技术网

使用涉及日期的PHP对MS Access CSV导出进行SQL查询

使用涉及日期的PHP对MS Access CSV导出进行SQL查询,php,sql,date,csv,ms-access-2010,Php,Sql,Date,Csv,Ms Access 2010,二月来了,打破了我的习惯。我得到一个生成的CSV文件,它基本上是来自MS Access数据库的转储文件。我没有能力修改数据库。我使用PHP在CSV文件上运行查询,以便为boss生成报告。以下是我在2月份之前一直尝试运行的1号查询: 一, 从[Orders.csv]中选择*,其中[Order taked By Associate subrogate]=1009,并且[Date/Time taked]介于2016年1月5日和2016年7月5日之间,而不是[Order Status subrogate

二月来了,打破了我的习惯。我得到一个生成的CSV文件,它基本上是来自MS Access数据库的转储文件。我没有能力修改数据库。我使用PHP在CSV文件上运行查询,以便为boss生成报告。以下是我在2月份之前一直尝试运行的1号查询:

一, 从[Orders.csv]中选择*,其中[Order taked By Associate subrogate]=1009,并且[Date/Time taked]介于2016年1月5日和2016年7月5日之间,而不是[Order Status subrogate]=3

二, 从[Orders.csv]中选择*,其中[Order taked By Associate subrogate]=1009,格式为[Date/Time taked],“MM/dd/yyyyy”介于2016年1月5日和2016年7月5日之间,而非[Order Status subrogate]=3

三, 从[Orders.csv]中选择*,其中[Order Taked By Associated Surrogate]=1009,格式为[Date/Time Taked],'mm/dd/yyyy hh:nn:ss'介于2016年1月5日00:00:00至2016年7月5日23:59:59之间,而非[Order Status Surrogate]=3

当我运行查询1时,我没有得到任何结果;2号和3号返回所有内容。如果我运行查询2一天,那么它将返回正确的结果。查询中有71条时间段记录

查询日期并显示正确结果的正确方法是什么

最后一点信息:

'Driver={Microsoft Text Driver (*.txt; *.csv)};Dbq='.$file.';Extensions=asc,csv,tab,txt;Extended Properties="Excel 8.0;IMEX=1"'

您报告驱动程序将[Date/Time Take]字段视为日期/时间数据类型

因此,在将其与日期/时间值进行比较时,不应使用Format函数。Format返回字符串,而不是日期/时间值

访问将解释为2016年1月5日,即5月1日。如果你真的想表达1月5日,请使用2016-01-05,以避免混淆哪一块是月份,哪一块是日期

对于这两个建议,在WHERE子句中使用这样的条件

[日期/时间]在2016-01-05和2016-07-05之间 或者如果我猜错了日期

[日期/时间]在2016-05-01和2016-05-07之间
您报告驱动程序将[Date/Time Take]字段视为日期/时间数据类型

因此,在将其与日期/时间值进行比较时,不应使用Format函数。Format返回字符串,而不是日期/时间值

访问将解释为2016年1月5日,即5月1日。如果你真的想表达1月5日,请使用2016-01-05,以避免混淆哪一块是月份,哪一块是日期

对于这两个建议,在WHERE子句中使用这样的条件

[日期/时间]在2016-01-05和2016-07-05之间 或者如果我猜错了日期

[日期/时间]在2016-05-01和2016-05-07之间
这是一个csv文件,因此最有可能应用字符串比较规则。请尝试先将日期格式化为最重要的日期,例如yyy-mm-dd hh:mm:ss,然后即使使用字符串规则也会按预期进行比较/排序。这会产生一些影响,但仍然无法提供正确的信息。在CSV文件中,日期是这样写的:,06/02/2016 12:30:35,从其他表的INI文件中可以看出该字段是一个日期字段。此查询返回什么?从[Orders.csv]中选择DISTINCT TypeName[Date/Time Take],我从该查询中获得[Expr1000]=>日期。这是一个csv文件,因此很可能应用字符串比较规则。请尝试将日期格式化为最重要的第一个,例如yyyy-mm-dd hh:mm:ss,然后,即使使用字符串规则,也会按预期进行比较/排序。这产生了一些影响,但仍然无法提供正确的信息。在CSV文件中,日期是这样写的:,06/02/2016 12:30:35,从其他表的INI文件中可以看出该字段是一个日期字段。此查询返回什么?从[Orders.csv]中选择DISTINCT TypeName[Date/Time Take],我从该查询中获取[Expr1000]=>Date。这样做的时间段超过一天。我希望有一天也能使用同样的查询![Date/Time take]>=2016-05-01和[Date/Time take]<2016-05-02I在2016-05-02 00:00:00 AM和2016-05-02 23:59:59 PM之间添加,现在效果很好。非常感谢你的帮助!这项工作的时间超过一天。我希望有一天也能使用同样的查询![Date/Time take]>=2016-05-01和[Date/Time take]<2016-05-02I在2016-05-02 00:00:00 AM和2016-05-02 23:59:59 PM之间添加,现在效果很好。非常感谢你的帮助!