我可以在MYSQL上运行此命令
SELECT FROM_UNIXTIME(1395301163);
并获得所需的输出。 但是当我尝试运行时:
SELECT FROM_UNIXTIME(select signuptime from abc where sno=1);
它给了我错误。我认为FROM_UNIXTIME()方法只支持int中的unixtime。我有什么方法可以将unix时间戳从我的列(signuptime)
转换为正常时间戳。
我有这个名为abc的表。 它有三列:
1.Sno(BIGINT)
2.expiry_date(Big_int) - 它包含bigint中的unix_timestamp
3.Status(VARCHAR)
它让我们说2行
1row S.no-1,expirydate-1395301163和status = ACTIVE。
第二次 S.no-2,expirydate-1195301203和status = ACTIVE。
所以现在我想要一个查询,将所有行的expirydate与currentdate进行比较,如果expirydate小于当前日期update status to inactive
。
答案 0 :(得分:1)
为什么不用作
select FROM_UNIXTIME(signuptime) from abc where sno=1 ;
答案 1 :(得分:1)
要将SELECT
查询用作表达式,您需要另一组括号:
SELECT FROM_UNIXTIME((select signuptime from abc where sno=1));
关于第二个问题,您需要这样做:
UPDATE abc
SET Status = 'inactive'
WHERE expiry_date < UNIX_TIMESTAMP(NOW());