gpt4 book ai didi

mysql - 这个查询有什么问题?(sql转换日期)

转载 作者:行者123 更新时间:2023-11-29 00:31:03 25 4
gpt4 key购买 nike

以下查询运行良好:

SELECT * 
FROM MsUser
WHERE absensi_tanggal = DATE_FORMAT( STR_TO_DATE( "' .$query_array['datepicker'] . '", \'%m/%d/%Y\' ) , \'%Y-%m-%d\' )

但是,这个查询不起作用。我应该错过那里的东西:

SELECT * 
FROM MsUser
WHERE absensi_tanggal BETWEEN DATE_FORMAT( STR_TO_DATE( "' .$query_array['datepicker1'] . '", \'%m/%d/%Y\' ) , \'%Y-%m-%d\' )
AND DATE_FORMAT( STR_TO_DATE( "' .$query_array['datepicker2'] . '", \'%m/%d/%Y\' ) , \'%Y-%m-%d\' )

上面的查询总是返回 0 个结果。

感谢任何帮助,谢谢 :D

最佳答案

由于 STR_TO_DATE 返回一个可以与 BETWEEN 一起使用的正确的 DATE 类型值,您是否简单地尝试过:

SELECT * 
FROM MsUser
WHERE absensi_tanggal
BETWEEN
STR_TO_DATE( "' .$query_array['datepicker1'] . '", \'%m/%d/%Y\' )
AND
STR_TO_DATE( "' .$query_array['datepicker2'] . '", \'%m/%d/%Y\' )

我的猜测是,MySQL 在将前面的字符串转换为日期,然后再转换回字符串,然后再次转换回日期以使 BETWEEN 工作时遇到困难。

另外,试试这个让它更整洁一点:

"
SELECT *
FROM MsUser
WHERE absensi_tanggal
BETWEEN
STR_TO_DATE('{$query_array['datepicker1']}','%m/%d/%Y')
AND
STR_TO_DATE('{$query_array['datepicker2']}','%m/%d/%Y');
"

以防万一你没有确认 datepicker1 的值早于 datepicker2,你可以像这样运行查询来确定(虽然我建议仅用于测试):

SELECT * 
FROM MsUser
WHERE
(
absensi_tanggal
BETWEEN
STR_TO_DATE('{$query_array['datepicker1']}','%m/%d/%Y')
AND
STR_TO_DATE('{$query_array['datepicker2']}','%m/%d/%Y')
) OR (
absensi_tanggal
BETWEEN
STR_TO_DATE('{$query_array['datepicker2']}','%m/%d/%Y')
AND
STR_TO_DATE('{$query_array['datepicker1']}','%m/%d/%Y')
);
"

关于mysql - 这个查询有什么问题?(sql转换日期),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16519347/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com