Mysql Select语句可动态转换时间戳

Mysql Select语句可动态转换时间戳,mysql,sql,str-to-date,Mysql,Sql,Str To Date,我有一个MYSQL表,它有一个以字符串格式存储的名为timestamp的列名。本栏中的时间戳采用以下格式,例如“20/10/2014 05:39 PM” 现在,如何选择一行并将时间戳列动态转换为24小时格式 基本上我想要这样的东西。 选择id、user、STR_TO_DATE(时间戳,'%d/%m/%Y%h:%i%p')作为来自mytable的时间戳,其中user=“bob” 但这是行不通的。看起来它无法识别STR_TO_DATEsql函数中的timestamp变量,并为timestamp列重新

我有一个MYSQL表,它有一个以字符串格式存储的名为timestamp的列名。本栏中的时间戳采用以下格式,例如“20/10/2014 05:39 PM”

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

基本上我想要这样的东西。
选择id、user、STR_TO_DATE(时间戳,'%d/%m/%Y%h:%i%p')作为来自mytable的时间戳,其中user=“bob”

但这是行不通的。看起来它无法识别
STR_TO_DATE
sql函数中的timestamp变量,并为timestamp列重新调整NULL

请帮忙。

在我看来很好:

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                                     |
+---------------------------------------------------------+

(我知道这应该是一个注释,但这是为了获得格式设置的答案。)

使用日期格式功能,而不是str_to_date:

从mytable中选择id、用户、日期\u格式(时间戳,%d/%m/%Y%h:%i%p')作为时间戳,其中user=“bob”;

“我有一个MYSQL表,它有一个以字符串格式存储的名为timestamp的列名。”-这就是您出错的地方。正确的方法是将其存储为日期或时间戳,并在需要将其格式化为特定格式时进行转换。我认为查询出错了,因为
timestamp
是一个保留字。请尝试将其用反勾(
STR_to_DATE(`timestamp`,'%....')
)括起来,或同时重命名该列。已尝试同时括起来,然后重命名列名。仍然返回NULL作为值。这对我也适用:可能原始数据在列中有NULL?是的,如果直接提供数据,这是有效的。但我想选择一列,并动态转换该列的结果。i、 e.
timestamp
列。我的坏消息。我在我的查询中有一些输入错误,它是有效的。谢谢你抽出时间。现在可以了。