java有关时间不合法查询的问题
Posted SkillingYu
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java有关时间不合法查询的问题相关的知识,希望对你有一定的参考价值。
问题:假设前台传过来一个不合法的时间,如2019-02-31,有哪些处理方式。
一:可以采用SimpleDateFormat进行校验,然后返回前台“日期不合法”之类的提示
import java.text.SimpleDateFormat; class Main { public static void main(String[] args) { String str1="2020-2-1"; String str2="2000-2-30"; System.out.println(check(str1)); System.out.println(check(str2)); } static boolean check (String str) { SimpleDateFormat date=new SimpleDateFormat("yyyy-MM-dd"); try { date.setLenient(false); date.parse(str); } catch (Exception e) { return false; } return true; } }
二:可进行正则表达式进行验证是否正确,如下:
public boolean isDate(String date){ //判断日期格式和范围 String rexp = "^((\d{2}(([02468][048])|([13579][26]))[\-\/\s]?((((0?[13578])|(1[02]))[\-\/\s]?((0?[1-9])|([1-2][0-9])|(3[01])))|(((0?[469])|(11))[\-\/\s]?((0?[1-9])|([1-2][0-9])|(30)))|(0?2[\-\/\s]?((0?[1-9])|([1-2][0-9])))))|(\d{2}(([02468][1235679])|([13579][01345789]))[\-\/\s]?((((0?[13578])|(1[02]))[\-\/\s]?((0?[1-9])|([1-2][0-9])|(3[01])))|(((0?[469])|(11))[\-\/\s]?((0?[1-9])|([1-2][0-9])|(30)))|(0?2[\-\/\s]?((0?[1-9])|(1[0-9])|(2[0-8]))))))"; Pattern pat = Pattern.compile(rexp); Matcher mat = pat.matcher(date); boolean dateType = mat.matches(); return dateType; }
三:还可直接在sql语句中利用DATE_FORMAT,将时间字段转换成字符串进行比较(可实现正常查询),但缺点是数据量大时查询比较慢,
select * from tb_ceshi_data where DATE_FORMAT(business_time, ‘%Y-%m-%d‘)>‘2019-2-31‘
以上是关于java有关时间不合法查询的问题的主要内容,如果未能解决你的问题,请参考以下文章
我在执行非查询 mysql.dll 期间遇到致命错误,并且空文件路径不合法
登录首页时报错:java.lang.IllegalArgumentException (不合法的参数异常)
你如何在 python 中处理 graphql 查询和片段?
ElasticSearch search api的基础语法+Query DSL搜索+filter与query对比+组合查询+定位不合法的搜索