为什么mysql stored proc在x datetime中转换为name\u const?

irtuqstp  于 2021-06-20  发布在  Mysql
关注(0)|答案(1)|浏览(268)

当我运行“show processlist”时,mysql是否应该考虑使用name\u const()作为传入的datetime参数?
例如:

create procedure sp_test(IN startdate DATETIME, IN enddate DATETIME)
BEGIN
    select * from my_table a
    where a.visit_date between startdate and enddate;
END

我在python中称之为:

cursor.callproc('sp_test', ['2018-01-01 00:00:00', '2018-01-01 23:59:59'])

或者在我选择的sql客户机中:

call sp_test('2018-01-01 00:00:00', '2018-01-01 23:59:59');

当我查看“ShowProcessList”时,我会得到以下信息(格式有点可读性):

select * from my_table a
where a.visit_date between 
NAME_CONST('startdate',_latin1'2018-01-01 00:00:00' COLLATE 'latin1_swedish_ci') 
and NAME_CONST('enddate',_latin1'2018-01-01 23:59:59' COLLATE 'latin1_swedish_ci')

我很好奇这是否正确?我把约会时间传错了吗?

dhxwm5r4

dhxwm5r41#

别担心,一切都是对的。这只是mysql的内部转换。
阅读更多关于函数的信息
所提供链接的一些摘录:
返回给定值。当用于生成结果集列时,name\u const()使该列具有给定的名称。
此功能仅供内部使用。服务器在从包含对本地程序变量的引用的存储程序中写入语句时使用它

相关问题