【问题标题】:Fetch data from Access by comparing dates using WHERE Date BETWEEN start date and end date chosen from JQuery DatePicker通过使用从 JQuery DatePicker 选择的开始日期和结束日期之间的日期比较日期,从 Access 中获取数据
【发布时间】:2021-06-17 07:03:38
【问题描述】:

目前对于我的系统,我正在创建一个 php 图表系统,用户可以在其中从两个日期选择器中选择所需的日期,即开始日期和结束日期。

一旦用户提交日期,日期将使用 $_POST 以 $From 和 $To 的形式存储到变量中。我想把这两个日期从我的Access数据库中取出来。

下面是我当前的代码

PHP

<?php 
    if(isset($_POST['Search'])){
        $From=$_POST['From'];
        $To=$_POST['to']; 
        $conn = odbc_connect("Ingot_Daily_Report", "", "");
        $query = "SELECT * FROM Output_Data WHERE data_Day BETWEEN '$From' AND '$To'";
        $sql = odbc_exec($conn, $query);
        while($row=odbc_fetch_array($sql)){
    ?>  
        ["<?php echo $row['data_Day']; ?>", <?php echo $row['Crystal_Out']; ?>, <?php echo $row['Aggressive_Daily_Target']; ?>, <?php echo $row['KPI_Target']; ?>, <?php echo $row['AverageToDate']; ?>],
    <?php   
    }
    }
    ?>

我的 DatePicker 代码

<script>
$(document).ready(function(){
    $.datepicker.setDefaults({
        dateFormat: 'm/d/yy'
    });
    $(function(){
        $("#From").datepicker({
             
        onClose: function (selectedDate) {
             $("#To").datepicker("option", "minDate", selectedDate);

        }

        });
        $("#To").datepicker({
            
                onClose: function (selectedDate) {
            $("#From").datepicker("option", "maxDate", selectedDate);

                }
        });
    });
               
});
</script>

我的访问日期列是日期/时间类型,但是当我运行上述代码时,会出现显示数据类型不匹配的错误。我尝试将列设置为长文本,但是显示的数据不是我想要的,因为例如我选择了日期 15/6/2021 到 17/6/2021,数据获取将是所有日期在 15- 17 ,查询完全忽略了月份和年份,当我将我的列更改为长文本时,当我更改为日期/时间时,就会出现错误数据类型不匹配。

请有人帮帮我。

【问题讨论】:

  • 您的数据库将采用 YYYY-MM-DD 格式。因此您需要重新格式化日期以使其正常工作。
  • @Samir 这适用于 SQL 但不是 Access 的情况,我选择了短日期,即 dd/mm/yy
  • 格式设置没有任何意义。 Access 将日期存储为双数字,默认情况下将其转换为 mm/dd/yyyy,除非您的系统和数据库设置为 dd/mm/yyyy 的国际日期样式。字段的格式设置不会改变实际值。我很少在表格中进行格式化,因为它会造成混乱。
  • @June7 你能指导我解决这个问题吗?如何正确解决此错误?是否可以比较我设置为字符串的日期?
  • 只有在字符数相同的情况下才能将日期与字符串进行比较,因此需要占位符零:09/01/2021。因为这是 alpha 排序,一次比较一个字符。我不使用 PHP 编程,也不使用国际日期样式,所以真的不知道如何最好地解决。 Access 中的查询要求日期用 # 个字符分隔,文本用撇号分隔,数字没有分隔符。

标签: php jquery ms-access jquery-ui-datepicker


【解决方案1】:

尝试使用 octothorpes,Access SQL 的日期/时间分隔符:

$query = "SELECT * FROM Output_Data WHERE data_Day BETWEEN #$From# AND #$To#";

【讨论】:

  • 它仍然给我数据类型不匹配先生。我在 Access 中的列是日期/时间数据类型
  • $From$To 持有什么价值观?
  • 它们是取自 Jquery Datepicker 的日期。
  • 是的,但最终值到底是多少?
  • 这就是我在 2021 年 6 月 17 日(从)2021 年 6 月 19 日(到)发出的声音
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-05-22
  • 1970-01-01
  • 2019-08-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多