【问题标题】:Date format from Mysql SELECT queryMysql SELECT 查询中的日期格式
【发布时间】:2026-01-16 23:55:01
【问题描述】:

我的查询是这样的......

SELECT a.ID, a.time, a.quote, a.quantity, a.media, a.print, a.pack 
FROM quotes a

它会像这样返回我的日期...

如何让结果以March 2, 201205/04/2012 或其他有意义的形式返回?

更新 - 下面的 FROM_UNIXTIME 答案列出了我运行查询时有时间的所有记录 - 我需要记录最初创建的时间 - 而不是查询时间。

还有其他想法吗?

【问题讨论】:

    标签: mysql date time


    【解决方案1】:

    您可以使用FROM_UNIXTIME 来执行此操作:

    SELECT a.ID, FROM_UNIXTIME(a.time, '%M %e, %Y'), 
           a.quote, a.quantity, a.media, a.print, a.pack 
    FROM quotes a
    

    您可以使用指定与DATE_FORMAT一起使用的格式以任何方式设置日期格式。

    【讨论】:

    • 不幸的是,这些建议将每条记录列出为具有相同的日期/时间 - 我运行查询的时间 - 而不是创建记录的时间。
    【解决方案2】:

    尝试使用此功能:FROM_UNIXTIME

    在你的情况下,它会是这样的(对于第一个例子):

    SELECT a.ID, FROM_UNIXTIME(a.`time`, '%M %e, %Y'), 
        a.quote, a.quantity, a.media, a.print, a.pack 
    FROM quotes a
    

    您可能还想做的是给结果一个别名:

    SELECT a.ID, FROM_UNIXTIME(a.`time`, '%M %e, %Y') as formatted_time, 
        a.quote, a.quantity, a.media, a.print, a.pack 
    FROM quotes a
    

    然后您将访问格式化为formatted_time 而不是time...的结果...

    注意:请注意时间列名称在反引号中

     a.`time`
    

    反引号导致查询返回当前时间而不是时间列的值

    【讨论】:

    • 不幸的是,这些建议将每条记录列出为具有相同的日期/时间 - 我运行查询的时间 - 而不是创建记录的时间。
    • @lowercase:你这是什么意思?这将使每条记录都具有相同的日期格式,但实际日期将取决于 a.time 的值
    • 我的意思是我有 500 条记录——所有记录都是在不同的时间和日期创建的,但是当我运行上述查询时,每个日期都会返回它现在的日期/时间(我运行查询的时间)。鉴于要显示的以下选项 - 我应该将查询数据类型运行为“TEXT”、“DATE”、“TIME”、“DATE+TIME”、“NUMBER”还是“DECIMAL”?
    • @lowercase: a.time 存储什么?它是存储这个创建的时间还是其他什么?不确定“运行查询数据类型为”是什么意思,但如果您存储时间戳,那么它是一个 NUMBER
    • @lowercase: 也许你的意思是它显示你是同一天?由于它不显示时间,它将只显示年、月和日,因此如果您今天添加了 20 条记录,您将看到相同的结果。尝试将格式规则更改为 '%M %e, %Y %H:%i:%s',您应该会看到差异。另请阅读我关于为结果赋予别名的编辑。如果您不正确地访问结果,这可能会造成混乱。
    【解决方案3】:
    SELECT DATE_FORMAT(FROM_UNIXTIME(a.`time`), '%M %e, %Y') AS `time`...
    

    有关 DATE_FORMAT 可能性的完整列表,请参阅 MySQL Manual

    【讨论】:

      【解决方案4】:

      看来您需要使用FROM_UNIXTIME 函数。来自文档:

      将 unix_timestamp 参数的表示形式作为值返回 'YYYY-MM-DD HH:MM:SS'YYYYMMDDHHMMSS.uuuuuu 格式,取决于 该函数是在字符串还是数字上下文中使用。

      【讨论】:

        【解决方案5】:
        SELECT a.ID, FROM_UNIXTIME(a.time), a.quote, a.quantity, a.media, a.print, a.pack 
        FROM quotes a
        

        【讨论】:

          【解决方案6】:

          您可以像这样使用 DATE_FORMAT 函数,

              SELECT a.ID, DATE_FORMAT(a.time, '%M %D %Y'), a.quote, a.quantity, a.media,a.print,a.pack 
              FROM quotes a
          

          【讨论】: