工作随笔——贰(关于字符串非空判断与数据库中日期时间问题)
来源:互联网 发布:淘宝订单好评短链接 编辑:程序博客网 时间:2024/04/30 23:39
问题描述:
1、判断某字符串非空问题。
2、日期比较问题。
解决步骤:
问题1:
1、原始判断语句:str!=null,发现没用,程序依旧会走向判断体而不会跳过。
2、改变:str.isEmpty()/str.length<=0/"".equals(str)均会报错:undefind,究其原因为在页面初始化时此语句即被使用而str在页面初始化时不会被定义,null.方法会报错。
3、改变:两层判断,第一层:str!=null||str=="",第二层:str.length<=0.达到效果。但是,可以发现,在第一层的两个比较是错误的,真正起作用的是第二层。但是由于上次的尝试,知道单独使用str.length会报错undefind,此时很疑惑。
4、改变:第一层的条件写错了,改:str!=null || str!="",但是发现在第二层的判断时又出现了undefind报错。
5、根据条件234,将判断尝试改写为:!(str==null || str=="")发现达到效果。
问题2:
1、数据库插入语句中set time = now()
2、但是在数据库中发现time字段中均为时间,而无日期。
3、查看time字段类型,为time,修改为date之后变为日期(同时也有datetime类型,但是我只需要日期所以改成了date)
4、这样修改的坏处在于之前所有的数据均变成了今天的日期,但之前并无数据可以恢复,所以也只能这样了。
问题反思:
问题1:这个问题的实质在于字符串判断非空,纠结这么长的原因在于对“字符串为空”的认知是str==null,就理所当然地认为“字符串非空”为str!=null,事实上这个是错的。
问题2:应该养成经常看数据库的习惯,对于有问题的病态的字段应及时排查。
技术获取:
1、字符串非空:!str==null
2、未初始化的字符串会在str==xxx中被初始化,而str!=xxx并不会初始化str。
3、连接符||采用从左向右最快判断方式,即优先判断连接符左边的条件,如条件为true则直接将整个判真,而不会再去判断连接符右边的条件。所以str==xxx||str.length<=0不会报错undefind而str.length<=0||str==xxx会报错。
4、数据库有time类型(仅时间-hh:mm:ss)、date类型(仅日期YYYY-MM-DD)、datetime类型(日期时间YYYY-MM-DD hh:mm:ss)
5、MYSQL插入时间的三种类型:当前日期时间now();当前日期curdate();当前时间curtime();格式同上。
6、MYSQL字段类型如果从time改变为date则所有数据会变为当前日期(因为之前没有存日期数据)。
- 工作随笔——贰(关于字符串非空判断与数据库中日期时间问题)
- 工作随笔——壹(关于MYSQL数据库中字符串与字符串匹配问题)
- 关于字符串非空判断效率问题
- MySQL 数据库中日期与时间函数
- 关于项目中日期时间与时间戳转化
- MySQL 数据库中日期与时间函数FROM_UNIXTIME(), UNIX_TIMESTAMP()
- MySQL 数据库中日期与时间函数FROM_UNIXTIME(), UNIX_TIMESTAMP()
- MySQL 数据库中日期与时间函数FROM_UNIXTIME(), UNIX_TIMESTAMP()
- 关于Java中日期与字符串简单的相互转换
- oracle中日期时间加减问题
- C#中日期与时间的格式
- MySQL中日期与时间类型
- MySQL中日期与时间类型
- MySQL中日期与时间类型
- hive中日期与时间戳转换
- java中日期与字符串的转换
- 关于C语言中日期 计算问题
- 关于easyui datagrid 中日期显示问题
- Activity一键退出的简单实现
- ButterKnife 8.4添加使用
- 欢迎使用CSDN-markdown编辑器
- Learnning Dlib(二) Create a DlibTest Project
- android:clipToPadding和android:clipChildren
- 工作随笔——贰(关于字符串非空判断与数据库中日期时间问题)
- Spring Boot下Druid连接池的使用配置分析
- 屏幕旋转
- 打造浪漫的Android表白程序
- 第一课(试听)
- hql语句基础的增删改查
- 阿里云 OSS+CDN
- Git命令详解
- json解析 Code=3840问题