【问题标题】:MySQL Using a string column with date text as a date fieldMySQL使用带有日期文本的字符串列作为日期字段
【发布时间】:2009-12-15 15:56:00
【问题描述】:

我正在进行数据库迁移,我目前有一个带有日期的字符串列(而不是为这些设置了最佳日期时间字段)。是否可以在 MySQL 中调用一个函数来将此字段转换为日期时间,以便我可以使用日期功能,例如在此日期之前或之后的日期?

【问题讨论】:

    标签: mysql string datetime


    【解决方案1】:
    SELECT  *
    FROM    mytable
    WHERE   CAST(mydatefield AS DATETIME) >= CAST('2009-01-01' AS DATETIME)
    

    如果您的日期是MySQL 无法理解的奇怪格式,请使用STR_TO_DATE

    SELECT  *
    FROM    mytable
    WHERE   STR_TO_DATE(mydatefield, '%Y, %d %m') >= STR_TO_DATE('2009, 01 01', '%Y, %d %m')
    

    【讨论】:

      【解决方案2】:

      STR_TO_DATE 函数 - ref

      例子:

      select str_to_date('10-oct-2006', "%d-%b-%Y"); 
      

      【讨论】:

        【解决方案3】:

        在从表中检索日期时,您始终可以将日期转换为时间戳:

        SELECT *
        FROM my_table
        WHERE UNIX_TIMESTAMP(my_time) > UNIX_TIMESTAMP("2000-10-18 12:30:40");
        

        如果不带参数调用,则以无符号整数形式返回 Unix 时间戳(自 '1970-01-01 00:00:00' UTC 以来的秒数)。如果使用日期参数调用 UNIX_TIMESTAMP(),它会返回参数的值作为自 '1970-01-01 00:00:00' UTC 以来的秒数。 date 可以是 DATE 字符串、DATETIME 字符串、TIMESTAMP 或格式为 YYMMDD 或 YYYYMMDD 的数字。服务器将日期解释为当前时区的值,并将其转换为 UTC 的内部值。客户端可以按照第 9.7 节“MySQL 服务器时区支持”中的说明设置他们的时区。

        有关更多信息,请查看 MySQL 网站上UNIX_TIMESTAMP 的文档。

        【讨论】:

          猜你喜欢
          • 2012-08-30
          • 1970-01-01
          • 2018-05-07
          • 1970-01-01
          • 2018-07-08
          • 2017-05-06
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多