我的事务MySQL数据库是在Centos 7中托管的。我使用jdbc获得以下查询输出:
选择a.party_code,CAST(DATE_FORMAT(STR_TO_DATE(a.bill_month,'%y%m'),'%M-%Y')AS CHAR)AS bill_month_word, a.bill_month,a.bill_amt,a.rebate,DATE_FORMAT(a.due_date,'%d-%m-%Y')AS due_dt,DATE_FORMAT(a.bill_date,'%d- %m-%Y')AS bill_date,b.name FROM v_bill_info a,consdb.v_party_info b WHERE a.party_code =' 230728' AND a.party_code = b.party_code AND a.due_date> = CURDATE()AND a.bill_month NOT IN(SELECT a.bill_month FROM v_bill_info a,TRANSACTION b WHERE b.consumer_no =' 230728' AND b。 consumer_no = a.party_code和DATE_FORMAT(STR_TO_DATE(a.bill_month,'%y%m'),'%Y-%m')= DATE_FORMAT(b.bill_month,' ;%Y-%m')和b.billdesk_status =' 0300')ORDER BY due_date LIMIT 1
输出是 - " party_code" " bill_month_word" " bill_month" " bill_amt" "回扣" " due_dt" " bill_date" "名称" " 230728" " 4月-2017" " 1704" " 1272" " 26" " 30-05-2017" " 18-05-2017" " SRI KARTICK CHANDRA DAS"
但是当从RHEL 7中托管的MIS数据库执行相同的查询时,我得到列bill_month_word的空值。但查询返回正确的结果,即" 2017年4月"从查询编辑器执行时。
答案 0 :(得分:0)
问题与"无效令牌"相关联。与Red Hat Linux 7中的MySQL相关联。
以下行需要在/etc/my.cnf中添加 的[mysqld] sql-mode =" STRICT_TRANS_TABLES,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION,ALLOW_INVALID_DATES"
重启mysqld服务。
它的作用是让JDBC根据传递给str_to_date()函数的明显无效的日期值提取计算出的日期值。