我正在创建一个网站,用户可以在该网站上创建特定场所的娱乐节目。我需要检查该特定场地是否有针对用户输入的开始时间和结束时间的任何节目。
我在数据库中有2个名为starttime
和'endtime'的列名,其中包含yyyy-mm-dd hh:mm:ss
形式的值。我想我需要将存储在数据库中两个字段中的值转换为时间戳。但是如何编写查询。
例如:
SELECT *
FROM table_name
WHERE
timestamp(starttime)>='user entered value'
AND timestamp(endtime)<='user entered value '
此查询是否可行。?
答案 0 :(得分:1)
如果“用户输入的值”是unix时间戳,则可以使用UNIX_TIMESTAMP(字段)函数将该字段转换为时间戳。如果不是,则必须先使用strtotime或类似功能将其转换为时间戳。或者您可以采用其他方式,并使用STR_TO_DATE(日期,格式)MySQL函数将字符串转换为日期时间,在查询中使用datetime值。
例如,如果用户以YYYY-mm-dd hh:mm
格式输入日期,请使用以下查询:
SELECT * FROM table_name WHERE starttime&gt; = STR_TO_DATE('2012-02-01 12:00','%Y-%m-%d%H:%i')和endtime&lt; = STR_TO_DATE('2013 -01-01 00:00','%Y-%m-%d%H:%i')
我个人喜欢在查询中使用UNIX时间戳,但这只是我的怪癖。
答案 1 :(得分:0)
为什么不使用unix时间?它使得处理日期变得更加简单。
$current_time=time();
这会创建一个整数。
您的查询:
SELECT * FROM table
WHERE starttime
BETWEEN starttime AND endtime