MySQL错误日期计算
我第一次看到这种sql行为。我不知道如何检查或做什么。新年过后,我们的一个系统开始做奇怪的事情。我在我们公司的系统里找到了这个代码MySQL错误日期计算,mysql,sql,Mysql,Sql,我第一次看到这种sql行为。我不知道如何检查或做什么。新年过后,我们的一个系统开始做奇怪的事情。我在我们公司的系统里找到了这个代码 SELECT masinu_galiojimai. * , galiojimu_tipai.pavadinimas, galiojimu_tipai.ispeti_pries_x_dienu, masinos.masinos_nr AS masina, IF( DATEDIFF( masinu_galioj
SELECT masinu_galiojimai. * ,
galiojimu_tipai.pavadinimas,
galiojimu_tipai.ispeti_pries_x_dienu,
masinos.masinos_nr AS masina,
IF( DATEDIFF( masinu_galiojimai.galioja_iki, CURDATE( ) ) <0, "baigesi", 2 *2 ) AS liko
FROM masinos
LEFT JOIN masinu_galiojimai ON masinu_galiojimai.masinos_id = masinos.id
LEFT JOIN galiojimu_tipai ON masinu_galiojimai.ispejimo_id = galiojimu_tipai.id
选择masinu_galiojimai.*,
galiojimu_tipai.pavadinimas,
galiojimu_tipai.ispeti_pries_x_dienu,
马西诺斯,马西诺斯,马西娜,
如果(DATEDIFF(masinu_galiojimai.galioja_iki,CURDATE())这不会解决您的问题,但会给您一个线索。
ASCII codes in hex:
0x62 0x61 0x69 0x67 0x65 0x73 0x69
b a i g e s i
因此,当您得到62616967657369
时,它不是用于2*2
,而是用于baigesi
,您的结果是“正确的”,而是显示为十六进制字符串
ASCII中的“4”是0x34
“白格思”
b=>62
a=>61
等等,所以你最终得到了62616967657369
这很可能是phpmyadmin的配置,因为它是在4转换为字符串后发生的。请尝试其他客户端以查看结果
另一种可能是连接上的排序规则设置。请参阅此错误报告
这似乎是在连接协议上使用utf8_-bin编码的结果。galioja_-iki的数据类型是什么?
?Just:date,默认值:0000-00-00这个系统不是我们编程的。我们公司几年前买的,我自己很讨厌,因为它在ubuntu 14上用PHP5.2运行。我不能更新php,因为它会停止运行他们重写了很多函数,禁用了所有的错误记录。如果我启用错误记录,我将在每个页面中得到大约300个php错误。你只能想象他们到底写了什么。很多文件都是加密的,所以基本上我不能像我想的那样修改php“baigesi”中的内容列和它的数据类型是什么?我尝试了Sequel Pro for mac,现在我看到了我应该看到的一切。谢谢你的帮助。但我有其他问题。这段代码必须显示两个日期:一个是传输有效期已经过期,另一个是有效期即将过期。如果日期是positive number,php将显示这个日期,如果日期是负数,例如-13天,php将不会打印任何内容。