MYSQL在开始结束日期日期格式d-m-Y之间选择[重复]
Posted
技术标签:
【中文标题】MYSQL在开始结束日期日期格式d-m-Y之间选择[重复]【英文标题】:MYSQL Select between start end date date format d-m-Y [duplicate] 【发布时间】:2018-07-03 06:55:25 【问题描述】:如果我在 mysql 中这样做,它可以工作:
SELECT * FROM reservations
WHERE
reservationStartDate >= '2018-01-01'
AND
reservationEndDate <= '2018-02-16'
AND
reservationSpace = 'kantoor-1'
所以我想做一个这样的函数:
public function checkReservations($startdate, $enddate, $workspace, $bind="")
//SELECT * FROM reservations WHERE reservationStartDate >= '2018-01-19' AND reservationEndDate <= '2018-02-01' AND reservationSpace = 'kantoor-1';
// Date format = 2018-12-31
$sql = "
SELECT * FROM DATABASENAME.reservations
WHERE
reservationStartDate >= '".$startdate."'
AND
reservationEndDate <= '".$enddate."'
AND
reservationSpace = '".$workspace."'
"
;
$this->run($sql,$bind);
我在 php 中使用:
$test2 = $db->checkReservations('2018-01-01', '2018-02-16', 'kantoor-1');
echo '<pre>'.print_r($test2,true).'</pre>';
什么都没有……顺便说一句,我已经将日期格式更改为 Y-m-d
【问题讨论】:
尝试:条件mysql之间。 reservationStartDate的数据类型是什么 请检查 SQL 数据库中“reservationStartDate”和“reservationEndDate”列的类型 @DeadManAlive,你怎么敢?!?我在提问后的 2 分钟内写下了我的答案,上面的链接是在我的答案之后添加的...... @user2342558 怎么了??以及您所说的上面的帖子已添加。我设置为重复的链接早于几个月/几年。不在2 minutes
:P
【参考方案1】:
您可以使用STR_TO_DATE
MySQL 函数:
SELECT * FROM reservations
WHERE reservationStartDate
BETWEEN STR_TO_DATE('22-01-2018', '%d-%m-%Y')
AND STR_TO_DATE('03-02-2018', '%d-%m-%Y')
BETWEEN
和 STR_TO_DATE
BETWEEN
是reservationStartDate >= '22-01-2018' AND reservationStartDate <= '03-02-2018'
的更好形式(在速度方面也是如此),但在您的情况下,它仅适用于STR_TO_DATE
将“dmY”字符串转换为真实日期格式以让 MySQL 处理它。
DATE
类型字段
您可以做的最好的事情是使用DATE
类型字段来存储日期,这样您就不再需要STR_TO_DATE
。
【讨论】:
【参考方案2】:试试这个:
SELECT * FROM reservations WHERE reservationStartDate >= '22-01-2018'
AND reservationEndDate<= '03-02-2018'
【讨论】:
SELECT * FROM reservations WHERE reservationStartDate BETWEEN STR_TO_DATE('01-01-2017', '%d-%m-%Y') AND reservationEndDate STR_TO_DATE('01-01-2019', '% d-%m-%Y') 这给出了一个错误。我想获取开始和结束日期 @Gurdt 请发布您的 mysql 错误。【参考方案3】:如果您需要从日期范围内的MySQL database
表中选择行,则需要使用如下命令:
SELECT * FROM table
WHERE date_column >= '2014-01-01' AND date_column <= '2015-01-01';
您可以使用STR_TO_DATE()
将您的字符串转换为MySQL
日期值:
SELECT * FROM reservations
WHERE reservationStartDate BETWEEN STR_TO_DATE('22-01-2018', '%d-%m-%Y') AND STR_TO_DATE('03-02-2018', '%d-%m-%Y')
但是,明智的做法是将该列转换为 DATE data type
,而不是使用字符串。
【讨论】:
以上是关于MYSQL在开始结束日期日期格式d-m-Y之间选择[重复]的主要内容,如果未能解决你的问题,请参考以下文章