从php时间戳获取月份名称

时间:2013-01-16 14:29:01

标签: mysql sql datetime timestamp

我有一个表将php时间戳存储为整数。我需要按日期和年份访问此数据。我可以抓住年份并将其与表格中存在的列行匹配,但需要从时间戳中获取月份名称。

到目前为止

代码

$query="SELECT * FROM archive_agent_booking
    WHERE agent_id='$account_no'
    AND (MONTHNAME(comp_date)='$month' AND year='$year' AND details='')
    ORDER BY order_time";

不幸的是,这没有任何回报。

comp_date是包含时间戳

的列

2 个答案:

答案 0 :(得分:2)

您只需将其打包在FROM_UNIXTIME()中,将其首先转换为DATETIME所需的MySQL MONTHNAME()

AND MONTHNAME(FROM_UNIXTIME(comp_date)) = '$month'

如果你在这个项目中足够早地稍微改变方向,我建议将值存储为正确的DATETIME类型而不是int值Unix时间戳。 MySQL能够更好地本地处理日期类型,而无需始终使用UNIX_TIMESTMAP(), FROM_UNIXTIME()进行转换。

如果来自用户输入,我们假设您的值$month已正确转义。否则,请考虑切换到支持MySQLi或PDO等预处理语句的API。

答案 1 :(得分:2)

您需要先使用FROM_UNIXTIME

将其转换为日期
MONTHNAME(FROM_UNIXTIME(comp_date)) = '$month'

作为旁注,如果值( s )来自外部,则查询容易被SQL Injection攻击。请查看下面的文章,了解如何防止它。通过使用PreparedStatements,您可以摆脱在值周围使用单引号。

相关问题