【问题标题】:get data from datetime's column从日期时间的列中获取数据
【发布时间】:2010-10-06 06:49:44
【问题描述】:

假设我在 DB 中有一个“日期时间”列。它有一个类似“2010-10-01 09:12:00”的数据。 除此之外,我想制作一个搜索页面:

<select id="month" name="month">
       <option value="01">01</option>
       <option value="02">02</option>
       ...
</select>
<input type="text" id="year" name="year">

如果我选择month=10year=2010如何获取数据?

【问题讨论】:

    标签: php mysql datetime select


    【解决方案1】:
    SELECT * 
    FROM   your_table 
    WHERE  MONTH(your_date) = '10' AND YEAR(your_date) = '2010';
    

    请注意,上述内容无法在您的日期列上使用索引(如果存在)。要使用索引,您必须使用如下内容:

    SELECT * 
    FROM   your_table 
    WHERE  your_date >= STR_TO_DATE(CONCAT('2010', '-', '10', '-01'), '%Y-%m-%d') AND
           your_date < STR_TO_DATE(CONCAT('2010', '-', '10', '-01'), '%Y-%m-%d') + INTERVAL 1 MONTH;
    

    【讨论】:

    • 要使用索引,他需要在查询之间使用日期
    • “你的日期”是什么意思?那是专栏的名字吗?
    • @klox:将 your_date 替换为您的 datetime 列的名称。
    • @Daniel:如何将组合框和文本字段值发送到此查询中?如何正确使用 POST 或 postVar?我们需要使用 concat 吗?
    • @klox:你的 HTML 很好。只需将该 &lt;select&gt; 字段包装到一个表单中,然后将其发布到您的 php 脚本中。然后只需将我示例中的'10''2010' 常量替换为从HTML 发布的数据。确保您不允许 SQL Injection 漏洞。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-01-21
    • 1970-01-01
    • 2022-01-19
    • 2023-03-15
    相关资源
    最近更新 更多