关于数据库日期操作的杂七杂八【格式化、互转、比较】

简介: 1、java String与Date类型之间的相互转换package test;import java.text.DateFormat;import java.

1、java String与Date类型之间的相互转换

package test;
import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.text.ParseException;
import java.util.Date;
public class StringOrDate {
     public static String dateToString(Date date, String type) {
         String str = null ;
         DateFormat format = new SimpleDateFormat( "yyyy-MM-dd" );
         if (type.equals( "SHORT" )) {
             // 07-1-18
             format = DateFormat.getDateInstance(DateFormat.SHORT);
             str = format.format(date);
         } else if (type.equals( "MEDIUM" )) {
             // 2007-1-18
             format = DateFormat.getDateInstance(DateFormat.MEDIUM);
             str = format.format(date);
         } else if (type.equals( "FULL" )) {
             // 2007年1月18日 星期四
             format = DateFormat.getDateInstance(DateFormat.FULL);
             str = format.format(date);
         }
         return str;
     }
     public static Date stringToDate(String str) {
        DateFormat format = new SimpleDateFormat("yyyy-MM-dd");
        Date date = null;
        try {
            // Fri Feb 24 00:00:00 CST 2012
            date = format.parse(str);
        } catch (ParseException e) {
            e.printStackTrace();
        }
//以上这种转出来不能直接参与和数据库date的比较
        // 2012-02-24
        date = java.sql.Date.valueOf(str);
                                             
        return date;
    }
     public static void main(String[] args) {
         Date date = new Date();
         System.out.println(StringOrDate.dateToString(date, "MEDIUM" ));
         String str = "2012-2-24" ;
         System.out.println(StringOrDate.stringToDate(str));
     }
}


2、java.sql.Date.valueOf和java.sql.Timestamp.valueOf


要说明的是如果采用的是

java.sql.Date.valueOf,

比较的时候,如2012-05-09如果存在数据库的是datetiime会有2012-05-09 00:00:00以后的都不会被查询出来就是当天的查询不出来。

要实现能查询出来则要使用

java.sql.Timestamp.valueOf

在开始时间写撑yyyy-mm-dd 00:00:00 截至时间写成yyyy-mm-dd 23:59:59就能查询到当天的了


3、关于日期比较

如果一个时间段好像用.>/<=。时间区间貌似就不行了。


时间区间的话在sql中用between记得时间要加引号

在hql中的话setDate记得里面的date用的是java.sql.date火车java.sql.timestamp



格式化Hibernate的SQL输出语句
今天在网上看到这么一段,很实用:

如果想要仔细看Hibernate生成的SQL语句,将format_sql设为true可以很大程度地减轻痛苦……
hibernate.format_sql = true

配置文件则加<property name="format_sql">true</property>
再加上这个的话:
hibernate.use_sql_comments = true
[可读性 + 可定位性]会更好
不过,这两个一起来的话也会造成SQL在console中显示的篇幅很大。

相关文章
|
存储 SQL 关系型数据库
OceanBase数据库并没有类似于传统关系型数据库中的"SET COL"这样的格式化命令
OceanBase数据库并没有类似于传统关系型数据库中的"SET COL"这样的格式化命令
86 1
|
3月前
|
JSON 前端开发 Java
数据库中的时间和前台展示的时间不一样,如何保存日期格式的数据到数据库? 如何展示数据库的日期数据到前台
这篇文章讨论了前端展示时间和数据库时间不一致的问题,并提供了解决方法,包括在SpringBoot的`application.properties`中配置时区和日期格式,以及如何将日期数据格式化后保存到数据库中。
数据库中的时间和前台展示的时间不一样,如何保存日期格式的数据到数据库? 如何展示数据库的日期数据到前台
|
2月前
|
关系型数据库 MySQL 数据处理
prettytable:像数据库一样格式化输出内容
prettytable:像数据库一样格式化输出内容
34 0
|
4月前
|
数据库
uniapp 【专题详解 -- 时间】云数据库时间类型设计,时间生成、时间格式化渲染(uni-dateformat 组件的使用)
uniapp 【专题详解 -- 时间】云数据库时间类型设计,时间生成、时间格式化渲染(uni-dateformat 组件的使用)
162 0
|
6月前
|
关系型数据库 MySQL Linux
【MySQL-10】数据库函数-案例演示【字符串/数值/日期/流程控制函数】(代码演示&可cv代码)
【MySQL-10】数据库函数-案例演示【字符串/数值/日期/流程控制函数】(代码演示&可cv代码)
【MySQL-10】数据库函数-案例演示【字符串/数值/日期/流程控制函数】(代码演示&可cv代码)
|
存储 SQL 关系型数据库
OceanBase数据库并没有类似于传统关系型数据库中的"SET COL"这样的格式化命令
OceanBase数据库并没有类似于传统关系型数据库中的"SET COL"这样的格式化命令
111 1
|
6月前
|
资源调度 前端开发 Java
前后端、数据库时间格式化方法
前后端、数据库时间格式化方法
|
6月前
|
关系型数据库 MySQL Java
mysql数据库处理TIMESTAMP格式日期
该内容提到了关于MySQL数据库处理TIMESTAMP格式日期的解决方案。首先,引用了两篇CSDN博客文章,一篇是关于使用MyBatis在MySQL中添加或修改TIMESTAMP日期的,另一篇是关于将Oracle的TIMESTAMP字段通过MyBatis插入到数据库的。接着,提到一个错误信息,说明MySQL表中不能有多个TIMESTAMP列。然后,展示了如何设置数据库字段(ctime和mtime)自动记录创建和更新时间,并提供了对应的mapper文件和Java字段定义,以实现业务代码中无需手动设置这些时间戳。
98 2
|
SQL 存储 Oracle
Oracle数据库中日期的操作、主键自增与分页查询
Oracle数据库中日期的操作、主键自增与分页查询
115 0
|
11月前
|
SQL 关系型数据库 MySQL
Mysql数据库 5.SQL语言聚合函数 语言日期-字符串函数
Mysql数据库 5.SQL语言聚合函数 语言日期-字符串函数
75 0