今天数据入库的时候遇到了一个小问题。
问题
postrgrepSQL数据库中存储2023-10-10T01:12:32:910.345343类型的数据,数据库使用
timestamp类型,存储完成后,会变成2023-10-10 01:12:32.91 自动将0抹掉
解决方案 使用TO_CHAR:
数据库数据
SELECT * FROM test
执行结果
SELECT name,age,TO_CHAR(inputtime, 'yyyy-mm-dd hh24:mi:ss.ms') AS formatted_time FROM test
执行结果
TO_CHAR(inputtime, 'yyyy-mm-dd hh24:mi:ss.ms') 中的'yyyy-mm-dd hh24:mi:ss.ms' 不区分大小写
将上面的时间格式,使用java代码进行格式化
import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;
public class DateTimeFormattingExample {
public static void main(String[] args) {
String dateTimeString = "2023-10-10T01:12:32.910345343";
LocalDateTime dateTime = LocalDateTime.parse(dateTimeString, DateTimeFormatter.ISO_LOCAL_DATE_TIME);
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss.SSS");
String formattedDateTime = dateTime.format(formatter);
System.out.println("Formatted Date Time: " + formattedDateTime);
}
}
输出结果:
DATE和TIMESTAMP的区别
DATE和TIMESTAMP是两种不同的日期时间类型,它们有一些区别:
- 存储范围:DATE类型存储日期信息,精确到年、月、日,范围通常为公元前1000年到公元9999年。而TIMESTAMP类型存储日期和时间信息,精确到秒或更小的精度,范围通常为1970-01-01 00:00:01到2038-01-19 03:14:07(对于32位系统)或者公元前4713年到公元9999年(对于64位系统)。
- 存储空间:DATE类型通常需要较少的存储空间,因为它只存储日期部分。而TIMESTAMP类型需要更多的存储空间,因为它存储日期和时间部分。
- 表示方式:DATE类型以'YYYY-MM-DD'的格式表示日期,没有时间部分。TIMESTAMP类型以'YYYY-MM-DD HH:MM:SS'的格式表示日期和时间。
- 自动更新功能:在某些数据库中,TIMESTAMP类型具有自动更新功能。当插入或更新行时,如果该列被定义为TIMESTAMP类型,并且没有指定具体的值,数据库会自动将当前的日期和时间赋给该列。而DATE类型没有这种自动更新的功能。
- 时区支持:在某些数据库中,TIMESTAMP类型可以包含时区信息,例如TIMESTAMP WITH TIME ZONE。这使得在不同时区之间进行日期和时间转换更加方便。而DATE类型通常不包含时区信息。