【问题标题】:Can I compare MysQL timestamp with datetime columns? is it bad?我可以将 MySQL 时间戳与日期时间列进行比较吗?不好吗?
【发布时间】:2011-04-22 14:59:40
【问题描述】:

所以,我有一个表,其中“ABC”列是时间戳,“BCD”是日期时间。

如果我这样做:

SELECT * FROM myTable WHERE ABC > BCD

不好吗?会影响性能吗?

它们在性能方面的比较如何?

【问题讨论】:

    标签: mysql datetime timestamp


    【解决方案1】:

    是的,您可以将datetimetimestamp 进行比较。这还不错,但请注意以下几点:

    请记住,尽管DATETIMEDATETIMESTAMP 值都可以使用相同的格式集指定,但这些类型的值范围并不相同。例如,TIMESTAMP 值不能早于1970 UTC 或晚于'2038-01-19 03:14:07' UTC。

    这意味着像'1968-01-01' 这样的日期虽然作为DATETIMEDATE 值是合法的,但作为TIMESTAMP 值是无效的并且被转换为0。

    来自MySQL Reference Manual :: The DATETIME, DATE, and TIMESTAMP Types

    注意以下测试用例如何正常工作:

    CREATE TABLE t1 (d1 datetime, d2 timestamp);
    
    INSERT INTO t1 VALUES ('1968-01-01 00:00:00', '1980-01-01 00:00:00');
    INSERT INTO t1 VALUES ('2040-01-01 00:00:00', '1980-01-01 00:00:00');
    
    SELECT * FROM t1 WHERE d2 < d1;
    +---------------------+---------------------+
    | d1                  | d2                  |
    +---------------------+---------------------+
    | 2040-01-01 00:00:00 | 1980-01-01 00:00:00 |
    +---------------------+---------------------+
    1 row in set (0.00 sec)
    
    SELECT * FROM t1 WHERE d2 > d1;
    +---------------------+---------------------+
    | d1                  | d2                  |
    +---------------------+---------------------+
    | 1968-01-01 00:00:00 | 1980-01-01 00:00:00 |
    +---------------------+---------------------+
    1 row in set (0.00 sec)
    
    SELECT * FROM t1 WHERE d2 < '2040-01-01 00:00:00';
    +---------------------+---------------------+
    | d1                  | d2                  |
    +---------------------+---------------------+
    | 1968-01-01 00:00:00 | 1980-01-01 00:00:00 |
    | 2040-01-01 00:00:00 | 1980-01-01 00:00:00 |
    +---------------------+---------------------+
    2 rows in set (0.00 sec)
    
    SELECT * FROM t1 WHERE d2 > '2040-01-01 00:00:00';
    Empty set (0.00 sec)
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2019-05-23
      • 1970-01-01
      • 2020-04-22
      • 1970-01-01
      • 2017-05-04
      • 1970-01-01
      • 2016-11-04
      相关资源
      最近更新 更多