【问题标题】:PHP between date doesn't match with the requested日期之间的 PHP 与请求的不匹配
【发布时间】:2012-07-23 05:46:11
【问题描述】:

我有一个关于 between 和 join 表的问题。 我在下面有一个代码:

SELECT t_submissions.badge_id,
       t_submissions.employee_name,
       t_submissions.dept_name,
       t_submissions.ot_date,
       t_submissions.ot_from,
       t_submissions.ot_to,
       t_submissions.remarks,
       t_submissions.submission_by,
       t_acknowledged.acknowledge_by,
       t_approved.approval_by
FROM   t_submissions,
       t_acknowledged,
       t_approved
WHERE  ot_date BETWEEN '01-Mar-2012' AND '30-Mar-2012'
       AND t_submissions.submission_no = t_acknowledged.submission_no
       AND t_submissions.submission_no = t_approved.submission_no;

当我尝试编译此代码时,显示日期为 2012 年 3 月 1 日至 2012 年 3 月 30 日的数据。显示日期为 01-Jun-2012、02-Jul-2012 的示例数据。 好吧,我认为我的代码有问题。需要你的建议。请帮忙。 :-)

【问题讨论】:

  • 表格中的日期字段是什么数据类型?字符串还是日期时间?
  • 嗨...我使用 varchar 数据类型...
  • 我相信与PHP无关,只有SQL(MySQL)。
  • 您必须将数据类型设置为date 而不是varchar!
  • 永远不会使用varchar在MySQL中存储date

标签: php sql date between


【解决方案1】:

您需要将 varchar 转换为日期,然后进行比较。这是一个类似的解决方案。

mySQL convert varchar to date

【讨论】:

    【解决方案2】:

    正如我在 cmets 中所说,您必须将日期字段的类型转换为 date。比较仅适用于date。这是你的代码。我试着美化它。
    此外,您应该在日期中使用月份的数字表示。

    SELECT ts.badge_id, ts.employee_name,
           ts.dept_name, ts.ot_date,
           ts.ot_from, ts.ot_to,
           ts.remarks, ts.submission_by,
           ta.acknowledge_by, tp.approval_by
    FROM t_submissions AS ts, t_acknowledged AS ta, t_approved AS tp 
    WHERE ot_date BETWEEN '01-03-2012' AND '30-03-2012' 
    AND ts.submission_no = ta.submission_no 
    AND ts.submission_no = tp.submission_no;
    

    【讨论】:

      猜你喜欢
      • 2013-09-19
      • 1970-01-01
      • 2019-04-20
      • 1970-01-01
      • 2020-05-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-09-01
      相关资源
      最近更新 更多