日期存储在DB中,如日期时间字段中的“2011-05-26 11:00:00”。我想查找日期大于本月第一天的所有行,即:2011-05-01 09:00:00
无法更改数据库中的日期格式。我可以用什么MySQL函数将DB中的日期转换为可以处理比较的格式?我猜测“本月第一个”的最佳格式是unix时间戳?
日期中的时间值始终存在,但仅限于办公时间,因此从09:00到17:00。
答案 0 :(得分:12)
如果它存储在DATETIME
字段中,只需查询WHERE date > '2011-05-01 09:00:00'
。
答案 1 :(得分:4)
$firstDayOfMonth = date( 'Y-m-d H:i:s', mktime(0,0,0,date('n'),1,date('Y'));
$query = "SELECT * FROM `table` WHERE `date` >= '$firstDayOfMonth'";
答案 2 :(得分:2)
或许这样的事情?
$oDateTime = new DateTime();
$sQuery = "SELECT * FROM table WHERE date >= ".$oDateTime->format("Y-m")."-01 09:00:00";
答案 3 :(得分:0)
直接与日期时间比较:
WHERE date_field >= '2011-05-01 00:00:00'
答案 4 :(得分:0)
您可以在MySQL中使用TIMESTAMPDIFF函数来比较时间,
FROM_UNIXTIME函数将Unix时间戳格式化为日期。
MySQL Reference Manual date and time function中提供了更多的mysql数据和时间函数和示例。
答案 5 :(得分:0)
DATETIME
字段可以像整数字段一样进行过滤,例如:
SELECT * FROM `table` WHERE `date` > '2011-05-01 09:00:00'
如果您真的想转换为Unix时间戳,请查看UNIX_TIMESTAMP函数。
答案 6 :(得分:0)
我认为你可以解决它,就像这样:
首先,在php中以mysql格式创建月份的第一天
$firsDay = date('Y-m-d 00:00:00', strtotime(date('Y-m').'-01 00:00:00'));
然后,在查询中使用它
select * from something where date >= $firsDay