背景今天看到一个mysql比较有意思的操作大概是这样的结构selectsubString(20221019180754,1,8)curdate 背景 今天看到一个mysql比较有意思的操作大概是这样的结构 select subString("20221019180754",1,8) cur
背景
今天看到一个mysql比较有意思的操作大概是这样的结构 select subString("20221019180754",1,8) curdate() 0; 以前从来没见过这样的写法很好奇这是什么操作特地研究一下
分析步骤
1. 先讲上面的语句放到mysql里面执行一下看看会返回什么结果
返回了一个0
2. 执行步骤拆解
执行select subString("20221019180754",1,8);返回了20221019
执行select curdate();返回了2022-10-19
执行select subString("20221019180754",1,8) curdate();返回了1
思考那到底是相等返回1还是不相等返回1呢
验证一下执行select subString("20991019180754",1,8) curdate();语句年份不一样返回的结果是0
总结
那也就是说当两边结果相等的时候会返回1不相等的时候返回0日期格式也会自动格式化为一致的类型对比。那回到最开始的题目上select subString("20221019180754",1,8) curdate() 0; 就是3个结果进行对比看看是不是3个结果都相等。我们已知select subString("20221019180754",1,8) curdate();的结果是1那select 1 0的结果就是0了一整个结果即为0。 这个语句的现实意义是对比数据库保存的日期与当前日志对比是否不相等。不相等返回1select 0 0返回1 ,相等返回0。