【问题标题】:Mysql Select statement to and convert timestamp on the flyMysql Select 语句和即时转换时间戳
【发布时间】:2015-04-24 06:53:06
【问题描述】:

我有一个 MYSQL 表,其中有一个名为 timestamp 的列名,以字符串格式存储。此列中的时间戳采用以下格式,例如'2014 年 10 月 20 日下午 5:39'

现在如何选择一行并将时间戳列动态转换为 24HR 格式。

基本上我想要这样的东西。 SELECT id, user, STR_TO_DATE(timestamp, '%d/%m/%Y %h:%i %p') as timestamp FROM mytable WHERE user="bob";

但这不起作用。看起来它无法识别STR_TO_DATE sql 函数中的时间戳变量及其为时间戳列重新调整 NULL。

请帮忙。

【问题讨论】:

  • “我有一个 MYSQL 表,其中有一个名为 timestamp 的列名,以字符串格式存储。” - 这就是你出错的地方。正确的方法是将其存储为日期或时间戳,并在您想将其格式化为特定格式时进行转换。我认为查询出错了,因为timestamp 是保留字。尝试将其括在反引号 (STR_TO_DATE(`timestamp`, '%....')) 中,或完全重命名该列。
  • 尝试封闭然后重命名列名。仍然返回 NULL 作为值。

标签: mysql sql str-to-date


【解决方案1】:

我觉得不错:

mysql> SELECT STR_TO_DATE('20/10/2014 05:39 PM', '%d/%m/%Y %h:%i %p');
+---------------------------------------------------------+
| STR_TO_DATE('20/10/2014 05:39 PM', '%d/%m/%Y %h:%i %p') |
+---------------------------------------------------------+
| 2014-10-20 17:39:00                                     |
+---------------------------------------------------------+

(我知道这应该是一个评论,但为了获得格式是一个答案。)

【讨论】:

  • 它也适用于我:sqlfiddle.com/#!2/f2ca6/3也许原始数据在列中有空?
  • 是的,如果您直接提供数据,这将有效。但我想选择一列并即时转换该列结果。即timestamp 列。
  • 我的错。我的查询中有一些错字,它有效。谢谢你的时间。现在可以了。
【解决方案2】:

使用 date_format 函数代替 str_to_date: SELECT id, user, date_format(timestamp, '%d/%m/%Y %h:%i %p') as timestamp FROM mytable WHERE user="bob";

【讨论】:

    猜你喜欢
    • 2015-04-13
    • 2016-11-02
    • 2011-07-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-08-15
    • 1970-01-01
    相关资源
    最近更新 更多