从日期时间列获取数据

发布于 2024-09-26 14:31:45 字数 384 浏览 1 评论 0原文

假设我在数据库中有一个“日期时间”列。它的数据类似于“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,我如何获取数据?

lets say I have a "Datetime" column in DB. It has a data like "2010-10-01 09:12:00".
Beside that, i want to make a searching page which have:

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

How do i do to get data if i choose month=10 and year=2010?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

奈何桥上唱咆哮 2024-10-03 14:31:45
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;
SELECT * 
FROM   your_table 
WHERE  MONTH(your_date) = '10' AND YEAR(your_date) = '2010';

Be aware that the above won't be able to use an index on your date column, if one exists. To use an index, you'd have to use something like this:

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;
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文