当前位置: 首页 > 面试题库 >

从时间戳列中选择当前月份记录mysql

斜瑞
2023-03-14
问题内容

我有一个mysql数据库,其中有一个TIMESTAMP字段,标题为date。如何选择月份为当前月份的所有字段?

提前致谢!


问题答案:

更新

一种更好的索引友好型查询日期范围内数据的方法

SELECT id, FROM_UNIXTIME(timestampfield) timestamp 
  FROM table1
 WHERE timestampfield >= UNIX_TIMESTAMP(LAST_DAY(CURDATE()) + INTERVAL 1 DAY - INTERVAL 1 MONTH)
   AND timestampfield <  UNIX_TIMESTAMP(LAST_DAY(CURDATE()) + INTERVAL 1 DAY);

注意:
您不对列数据应用任何函数,而是在条件的右侧进行所有必要的计算(它们是常量,并且仅在执行后评估一次)。这样,您就可以使MySQL受益于该timestampfield列上可能具有的索引。

原始答案:

SELECT id, FROM_UNIXTIME(timestampfield) timestamp 
  FROM table1
 WHERE MONTH(FROM_UNIXTIME(timestampfield)) = MONTH(CURDATE())
   AND YEAR(FROM_UNIXTIME(timestampfield)) = YEAR(CURDATE())

注意:
尽管此查询产生正确的结果,但实际上使您可能在timestampfield列上使用的索引的正确使用无效(这意味着MySQL将被强制执行全扫描)

这是 SQLFiddle 演示



 类似资料:
  • 本文向大家介绍如何在MySQL当前时间戳中选择10分钟内的所有记录?,包括了如何在MySQL当前时间戳中选择10分钟内的所有记录?的使用技巧和注意事项,需要的朋友参考一下 您可以使用以下语法选择当前时间戳内10分钟之内的所有记录- 为了理解上述语法,让我们创建一个表。创建表的查询如下- 使用insert命令在表中插入一些记录。查询如下- 使用select语句显示表中的所有记录。查询如下- 以下是输

  • 问题内容: 我正在尝试从数据库表中仅选择今天的记录。 目前我使用 但这需要过去24小时的结果,我需要它只选择今天的结果,而忽略时间。如何仅根据日期选择结果? 问题答案: 使用和 我想 使用 仍然使用INDEX 。 在演示中查看执行计划

  • 问题内容: 目前,我的表格中有一列存储日期和时间。该列的数据类型是 没有时区的时间戳 。因此它具有格式为的值。 我需要检索有关日期的行。如果我使用: 它将提供介于“ 2011-09-13 11:03:44.537”和“ 2011-09-12 11:03:44.537”之间的值。 但是,如果我要使用: 没有日期,月份和秒,它不显示任何行。 如何从此表中获取有关日期的值(仅包含日期,忽略小时,分钟和秒

  • 问题内容: 希望这是一个简单的解决方案,但我正在尝试过滤以下数据:- 今天 昨天 本星期 这个月 在两个日期之间。 我从数据库获得的日期基本上是一个时间戳。 这是我尝试的: 今天 昨天 … 这不是真的工作。 任何的想法? 问题答案: 如果仅按日期选择,则将计算基于(仅返回日期)而不是(返回日期和时间)。这些示例将捕获日期范围内的所有时间: 今天: 昨天: 这个月: 在2013年6月3日至2013年

  • 我使用postgres的rails应用程序和我有一个postgresql db。我有一个要求选择和

  • 问题内容: 我的数据具有日期(Ymd H:i:s)列(类型为datetime)。我想选择输入日期之前1周内的所有记录(在下面的示例中:2011-09-17 00:00:00,但是遇到了一些麻烦。这是我得到的: 我究竟做错了什么?谢谢 问题答案: 我想你错过在前面: 这是我运行的查询,适用于该零件: 您可以使用负值来执行“给定日期前N周”的查询,这样可以正常工作: 要么: