【问题标题】:My sql query to get data between two particular dates我的 sql 查询以获取两个特定日期之间的数据
【发布时间】:2015-06-18 04:42:20
【问题描述】:

我有一个表,其中列类型为“timesatmp”,我需要获取两个特定日期之间的数据。

我试过了,它不起作用:

select * 
from table_name 
where column_name >= "2015-06-01 00:00:00" and column_name <= now();

列名的数据类型为“时间戳”,并以 2015-02-05 19:37:28 的形式存储值。

【问题讨论】:

  • 列类型是“timesatmp”?这是一个错字吗?您的查询是否使用正确的列名?你能去掉“and column_name
  • 这对我有用:where column_name between '2015-06-16 00:00:00' and now() 时间戳文字用单引号或双引号封装。
  • “它不起作用”是对您观察到的行为的非常模糊的描述。返回错误信息?没有行被返回?返回的行数过多?
  • 查询中没有问题,看来您打错字了...请仔细检查
  • 那些对答案投了反对票的人。提供 cmets 为什么他们对答案投了反对票。

标签: mysql


【解决方案1】:

您的查询看起来不错(除了不幸的标识符table_namecolumn_name

作为演示:

创建和填充表:

 CREATE TABLE table_name (column_name TIMESTAMP DEFAULT CURRENT_TIMESTAMP);

 INSERT INTO table_name (column_name) VALUES 
  ('2015-02-05 19:37:28')
 ,('2015-06-01 00:00:00')
 ,('2015-06-02 02:02:02')

查询:

 SELECT * 
   FROM table_name 
  WHERE column_name >= "2015-06-01 00:00:00" 
    AND column_name <= NOW();

返回:

          column_name  
  -------------------
  2015-06-01 00:00:00
  2015-06-02 02:02:02

正如我在对您的问题的评论中指出的那样:

“它不起作用”是对您观察到的行为的非常模糊的描述。返回错误信息?没有行被返回?返回的行太多?

【讨论】:

    【解决方案2】:
       select * from table_name where date(column_name) >= 'your_date' AND date(column_name) = now()
    

    这可能对您的问题有所帮助

    【讨论】:

    • 这与 OP 查询有何不同?这有什么区别。 (我并不是说没有区别……我只是说没有迹象表明 OP 想要“尝试这个”,这解决了什么问题?
    • 我没听懂你。你想说什么?
    • 我在问“为什么” OP 应该试试这个。 OP 查询中的问题 将通过使用此替换查询解决 吗? (这个答案看起来就像我们只是在墙上扔东西看看是否粘住。也就是说,我们在不了解我们正在解决的实际问题的情况下抛出解决方案。)
    • 好的。那么你还有其他解决方案吗?或者你有任何关于 OP 查询的答案,为什么该查询有效? @spencer7593
    【解决方案3】:

    您想选择两个特定日期之间的数据,然后使用两个特定日期值而不是 now() 函数:

    select * from table_name where column_name>= "2015-06-01 00:00:00" and column_name<= "2015-06-10 23:23:23";
    

    select * from table_name where column_name between "2015-06-01 00:00:00" and  "2015-06-10 23:23:23";
    

    如果您想选择从任何特定日期到现在的数据,请按原样使用您的查询:

    select * from table_name where column_name>= "2015-06-01 00:00:00" and column_name<= now();
    

    select * from table_name where column_name btween "2015-06-01 00:00:00" and  now();
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2017-07-26
      • 1970-01-01
      • 2022-01-04
      • 2011-07-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多