是否会执行以下查询?

时间:2017-02-02 09:33:37

标签: mysql

请考虑下表。

 CREATE TABLE `Emp` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `userName` int(11) DEFAULT NULL,
  `modiTime` datetime DEFAULT NULL,
   PRIMARY KEY (`id`)
);

假设有以下条目:

insert into `Emp` (`id`, `userName`, `modiTime`) values('1','test','2017-02-02 14:05:26');
<2017-02>'2017-02-02 14:05:26'的Epoch Unix时间戳是1486044326.是否可以执行以下查询?因为我是新手,请说明理由。

SELECT * FROM Emp WHERE modiTime = 1486044326;

1 个答案:

答案 0 :(得分:0)

你为什么要这样做? moditime是日期时间; 1486044326是一个数字。您不会将日期时间与数字进行比较。

如果您想查找日期,请使用MySQL接受日期文字的文字,例如'2017-02-02 14:05:26'。

WHERE modiTime = '2017-02-02 14:05:26'

(MySQL不支持日期时间文字的标准SQL语法WHERE modiTime = TIMESTAMP '2017-02-02 14:05:26'。)

如果您只有此unix编号,请将其转换为datetime。 MySQL为此提供了函数FROM_UNIXTIME。这将转换为有效日期时间格式的字符串(即'YYYY-MM-DD HH:MM:SS')。

WHERE modiTime = FROM_UNIXTIME(1486044326)

这会隐式地将结果字符串强制转换为datetime。如果你想彻底,你可以明确地转换它,从而表明你知道结果是一个有效的日期时间文字格式的字符串:

WHERE modiTime = CAST(FROM_UNIXTIME(1486044326) AS DATETIME)