请考虑下表。
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;
答案 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)