我有一个moodle安装,其中mdl_user表中有一个名为firstaccess的列,其类型为bigint(10),并包含以下格式的日期 1266839570 。
我正在编写一个根据日期过滤器访问用户的查询。对于例如我想检查哪些用户firstaccess大于'2010-04-12'。我怎样才能转换日期?这两种日期格式不同。我认为firstaccess是unix时间戳。我应该将'2010-04-12'更改为unix时间戳,还是有办法将firstaccess(即1266839570)转换为yyyy-mm-dd格式。
请帮我解决这个问题。
由于
答案 0 :(得分:1)
您可以使用mktime()
功能在php中创建一个unix时间戳,然后将其放入查询中。
MySQL有一个date_format()
函数,可以根据你的喜好格式化日期,但我不确定它是否适用于bigint。你最好使用mktime
。
答案 1 :(得分:1)
date()和mktime()是来自unix时间戳和后面的Concert的函数 您可以用任何一种方式转换日期
答案 2 :(得分:1)
我相信你可以使用时间戳来编写查询。例如。
SELECT * FROM mytable WHERE firstaccess >= TIMESTAMP('2010-04-12')
答案 3 :(得分:1)
我不知道表单中的日期是什么形式,但您可以使用mktime轻松将其转换为时间戳(如果已经不是一个)。例如:
$mytimestamp=mktime(0,0,0, $month, $day, $year);
然后将其添加到您的查询中:
$myQuery= "SELECT whatever FROM sometable WHERE " . $mytimestamp . ">=firstaccess";
答案 4 :(得分:1)
像Paul Peelen一样,我的答案是MySQL查询。不过,我会采用另一种方式,将第一次访问转换为日期。 使用问题中的日期信息:
SELECT * FROM mytable WHERE DATE_FORMAT(FROM_UNIXTIME(firstaccess), '%Y-%m-%d') > '2010-04-12';