日期在日期时间字段中存储在DB中,例如:“2011-05-26 11:00:00”。我想查找日期大于本月第一天的所有行,即:2011-05-01 09:00:00MySQL日期比较
DB中的日期格式无法更改。我可以使用什么MySQL函数将数据库中的日期转换为可以处理比较的格式?我猜“月初”的最佳格式是unix时间戳?
日期中的时间值总是存在,但只有办公时间,因此从09:00到17:00。
日期在日期时间字段中存储在DB中,例如:“2011-05-26 11:00:00”。我想查找日期大于本月第一天的所有行,即:2011-05-01 09:00:00MySQL日期比较
DB中的日期格式无法更改。我可以使用什么MySQL函数将数据库中的日期转换为可以处理比较的格式?我猜“月初”的最佳格式是unix时间戳?
日期中的时间值总是存在,但只有办公时间,因此从09:00到17:00。
如果存储在DATETIME
字段中,只需在WHERE date > '2011-05-01 09:00:00'
上查询即可。
@deceze ...如果日期是动态生成的呢?如果下次日期ID 2001-06-12 05:00:00?你如何计算这个日期的第一个日期? – 2011-05-24 13:28:53
@Awais这是一个单独的问题,但不难找到PHP中的第一个月,并用'date('Y-m-d H:i:s')'格式化它。请参阅@ George的答案。 – deceze 2011-05-25 06:11:56
谢谢老兄,我从George的回答中了解到。 – 2011-05-25 06:46:17
$firstDayOfMonth = date('Y-m-d H:i:s', mktime(0,0,0,date('n'),1,date('Y'));
$query = "SELECT * FROM `table` WHERE `date` >= '$firstDayOfMonth'";
也许这样的事情?
$oDateTime = new DateTime();
$sQuery = "SELECT * FROM table WHERE date >= ".$oDateTime->format("Y-m")."-01 09:00:00";
比较直接的日期时间:
WHERE date_field >= '2011-05-01 00:00:00'
可以使用TIMESTAMPDIFF功能在MySQL中比较时,
FROM_UNIXTIME功能格式化Unix时间戳的日期。
更多mysql数据和时间函数和示例可在MySQL Reference Manual date and time function中找到。
DATETIME
字段可以过滤就像整型字段,例如:
SELECT * FROM `table` WHERE `date` > '2011-05-01 09:00:00'
在你真的要转换为Unix的时间戳的情况下,有一个看UNIX_TIMESTAMP功能。
我认为你可以解决它,这样的事情:
首先,创建一个月的第一天,在MySQL格式在PHP
$firsDay = date('Y-m-d 00:00:00', strtotime(date('Y-m').'-01 00:00:00'));
,然后在查询中使用它
select * from something where date >= $firsDay
“本月”是什么意思?这应该视为当前月份吗? – 2011-05-24 13:09:35
是的,本月 – stef 2011-05-24 13:17:21
发布在错误的问题。 – 2014-05-25 23:41:54