`
endual
  • 浏览: 3559617 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

Java String 转成 Mysql Date

阅读更多
问答首页 → Java编程和Java企业应用 → Hibernate
关于String类型转换成Date,再转换成String类型的问题!
悬赏:5 发布时间:2009-03-19 提问人:幽灵线程 (初级程序员)
< > 猎头职位: 上海: 上海:天会皓闻诚聘资深Java架构师
我最近一周在做一个练习项目,
用的是自己写的Struts1和Hibernate3框架。

有一个存储Date型数据很麻烦,不能解决。
如下:
1.给前台一个Date类型数据date赋值,格式为:2009-1-1

2.给struts的form对象赋值,类型为Date,格式为:非2009-1-1

3,给form对应的持久化对象po赋值,格式为:格式为:非2009-1-1

4.在hibernate构造sql语句时,需要 格式为:2009-1-1 的String数据类型,这里却得不到了。(关键是这里)

(我的sql语句为 insert into tablename values ( to_date('2009-1-1','yyyy-mm-dd') ))


问题概括:将 格式为2009-1-1的String ,转成 Date ,再转成 String:"2009-1-1"。

多问一句,各位朋友的存储日期用什么手段!
该问题已经关闭: 超过15天由系统自动关闭,悬赏平分给所有参与回答的会员
问题答案可能在这里 → 寻找更多解答

    * Java获取各种常用时间方法
    * Calendar常用方法封装
    * 分享一个关于日期常用操作工具类
    * DateField存储格式的问题?
    * java 求某个月中星期天的个数 算法

回答
insert into tablename values ( to_date('2009-1-1','yyyy-m-d') ))
airu (初级程序员) 2009-03-19
存储日期就用java.util.Date 你hbm.xml里面配置他的类型为java.util.Date,
你从页面提交过来的时间,struts会自动帮你生成指定的Date对象赋值的
你尽然用到了Hibernate就不用关心他的Sql语句了.

比如你的类是这样的
Java代码  收藏代码

   1. public class Student{ 
   2.    private Date date;//java.util.Date类型的 
   3.    //setter..getter... 
   4. } 

public class Student{
   private Date date;//java.util.Date类型的
   //setter..getter...
}



然后在你Student.hbm.xml配置文件里面你配置这个字段的类型为java.util.Date就可,或者不用配置他的类型就一个<property name="date"/> 他也会自动配置的.

然后你要保存页面提交过来的日期数据的时候(就是你要执行那条保存语句的时候)
你只要如下就可以了
Java代码  收藏代码

   1. //假如下面的方法可以正确获得Hierbante的Session 
   2. public void test(){ 
   3.   Student t = new Student(); 
   4.   t.setDate(new Date);//加入这个的日期是从页面获得过来的,你可以通过form.getDate()来设置. 
   5.   //然后你直接保存就可以了,hibnerate 会自动帮你生成语句并且执行保存数据的 
   6.    session.save(t);//注意要提交事务才能真正的执行 
   7. } 

//假如下面的方法可以正确获得Hierbante的Session
public void test(){
  Student t = new Student();
  t.setDate(new Date);//加入这个的日期是从页面获得过来的,你可以通过form.getDate()来设置.
  //然后你直接保存就可以了,hibnerate 会自动帮你生成语句并且执行保存数据的
   session.save(t);//注意要提交事务才能真正的执行
}

yourgame (CTO) 2009-03-20
发给你一个我自己写的
import java.text.DateFormat;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Calendar;
import java.util.Date;
import java.util.List;
import java.util.Locale;

/**
* @author Leonel Wong
* @version 1.0.0
* @create 2008-07-24 10:10
* @see 处理时间(包括时间格式的类)
*/
public class DateUtils {
/**
* 取时间年的格式代码
*/
public static String YEAR = "yyyy";

/**
* 取时间月的格式代码
*/
public static String MONTH = "MM";

/**
* 取时间日的格式代码
*/
public static String DAY = "dd";

/**
* 取时间时的格式代码
*/
public static String HOUR = "hh";

/**
* 取时间24小时制的格式代码
*/
public static String HOUR_24 = "HH";

/**
* 取时间分的格式代码
*/
public static String MIMUTE = "mm";

/**
* 取时间秒的格式代码
*/
public static String SECOND = "ss";

/**
* 取时间毫秒的格式代码
*/
public static String MILLISECOND = "SS";

/**
* 格式为yyyy-MM-dd的时间
*/
public static String YMD_FORMAT = YEAR + "-" + MONTH + "-" + DAY;
/**
* 格式为yyyy-MM-dd HH:mm:ss的时间
*/
public static String YMDHMS_FORMAT = YEAR + "-" + MONTH + "-" + DAY + " "
+ HOUR_24 + ":" + MIMUTE + ":" + SECOND;

/**
* 格式为yyyy-MM-dd HH:mm:ss:SS的时间
*/
public static String UTILTIME_FORMAT = YEAR + "-" + MONTH + "-" + DAY + " "
+ HOUR_24 + ":" + MIMUTE + ":" + SECOND + ":" + MILLISECOND;

/**
* 格式为yyyyMMddHHmmssSS的时间
*/
public static String CRITERIONTIME_FORMAT = YEAR + MONTH + DAY + HOUR_24
+ MIMUTE + SECOND + MILLISECOND;

/**
* @author 王磊
* @see 2008-03-08 获得yy-mm-dd格式的时间
* @return String date
*/
public static String getYearMonthDay() {
return getDateByFormat(YEAR + "-" + MONTH + "-" + DAY);
}

/**
* @see 返回格式为yyyy-MM-dd HH:mm:ss:SS的时间字符串
* @return String date
*/
public static String getNOWTime_0() {
return getDateByFormat(UTILTIME_FORMAT);
}

/**
* @see 返回格式为yyyyMMddHHmmssSS的时间字符串
* @return String date
*/
public static String getNOWTime_1() {
return getDateByFormat(CRITERIONTIME_FORMAT);
}

/**
* @see 获得指定时间格式
* @param String
*            format 时间格式
* @return String dateStr 返回获得相应格式时间的字符串
*/
public static String getDateByFormat(String format) {
String dateStr = "";
try {
if (format != null) {
Date date = new Date(System.currentTimeMillis());
SimpleDateFormat simFormat = new SimpleDateFormat(format,
Locale.CHINA);
dateStr = simFormat.format(date);
}
} catch (Exception e) {
e.printStackTrace();
}
return dateStr;
}

/**
* @see 获得指定时间格式
* @param Date
*            date 时间
* @param String
*            format 时间格式
* @return String dateStr 返回获得相应格式时间的字符串
*/
public static String getDateByFormatYMD(Date date) {
String dateStr = "";
try {
SimpleDateFormat simFormat = new SimpleDateFormat(YMD_FORMAT,
Locale.CHINA);
dateStr = simFormat.format(date);
} catch (Exception e) {
e.printStackTrace();
}
return dateStr;
}

/**
* @see 获得指定时间格式
* @param Date
*            date 时间
* @param String
*            format 时间格式
* @return String dateStr 返回获得相应格式时间的字符串
*/
public static String getDateByFormat(Date date, String format) {
String dateStr = "";
try {
if (format != null) {
SimpleDateFormat simFormat = new SimpleDateFormat(format,
Locale.CHINA);
dateStr = simFormat.format(date);
}
} catch (Exception e) {
e.printStackTrace();
}
return dateStr;
}

/**
* @see 获得当前时间
* @return Date date
*/
public static Date getNOWTime() {
return new Date(System.currentTimeMillis());
}

/**
* @see 把字符串类型的时间转换为yyyy-MM-dd的时间格式
*/
public static Date getDateByStrToYMD(String str) {
Date date = null;
if (str != null && str.trim().length() > 0) {
DateFormat dFormat = new SimpleDateFormat(YMD_FORMAT);
try {
date = dFormat.parse(str);
} catch (ParseException e) {
e.printStackTrace();
}
}
return date;
}

/**
* @see 把字符串类型的时间转换为自定义格式的时间
*/
public static Date getDateByStrToFormat(String format, String str) {
DateFormat dFormat = new SimpleDateFormat(format);
Date date = null;
try {
if (str != null) {
date = dFormat.parse(str);
}
} catch (ParseException e) {
e.printStackTrace();
}
return date;
}

/**
* 功能:判断输入年份是否为闰年<br>
*
* @param year
* @return 是:true 否:false
* @author pure
*/
public static boolean leapYear(int year) {
boolean leap;
if (year % 4 == 0) {
if (year % 100 == 0) {
if (year % 400 == 0) {
leap = true;
} else {
leap = false;
}
} else {
leap = true;
}
} else
leap = false;
return leap;
}

/**
* 功能:得到指定月份的月底 格式为:xxxx-yy-zz (eg: 2007-12-31)<br>
*
* @param String
* @return String
*/
public static String getEndOfMonth(String str) {
int tyear = Integer.parseInt(getDateByFormat(getDateByStrToYMD(str),
YEAR));
int tmonth = Integer.parseInt(getDateByFormat(getDateByStrToYMD(str),
MONTH));
String strtmonth = null;
String strZ = null;
if (tmonth == 1 || tmonth == 3 || tmonth == 5 || tmonth == 7
|| tmonth == 8 || tmonth == 10 || tmonth == 12) {
strZ = "31";
}
if (tmonth == 4 || tmonth == 6 || tmonth == 9 || tmonth == 11) {
strZ = "30";
}
if (tmonth == 2) {
if (leapYear(tyear)) {
strZ = "29";
} else {
strZ = "28";
}
}
strtmonth = tmonth >= 10 ? String.valueOf(tmonth) : ("0" + tmonth);
return tyear + "-" + strtmonth + "-" + strZ;
}

public static String getEndOfMonth(int tyear, int tmonth) {
String strtmonth = null;
String strZ = null;
if (tmonth == 1 || tmonth == 3 || tmonth == 5 || tmonth == 7
|| tmonth == 8 || tmonth == 10 || tmonth == 12) {
strZ = "31";
}
if (tmonth == 4 || tmonth == 6 || tmonth == 9 || tmonth == 11) {
strZ = "30";
}
if (tmonth == 2) {
if (leapYear(tyear)) {
strZ = "29";
} else {
strZ = "28";
}
}
strtmonth = tmonth >= 10 ? String.valueOf(tmonth) : ("0" + tmonth);
return tyear + "-" + strtmonth + "-" + strZ;
}

/**
* 功能:得到指定月份的月初 格式为:xxxx-yy-zz (eg: 2007-12-01)<br>
*
* @param String
* @return String
*/
public static String getStartOfMonth(int tyear, int tmonth) {
String strtmonth = tmonth >= 10 ? String.valueOf(tmonth)
: ("0" + tmonth);
return tyear + "-" + strtmonth + "-" + "01";
}

public static String getStartOfMonth(String str) {
int tyear = Integer.parseInt(getDateByFormat(getDateByStrToYMD(str),
YEAR));
int tmonth = Integer.parseInt(getDateByFormat(getDateByStrToYMD(str),
MONTH));
String strtmonth = tmonth >= 10 ? String.valueOf(tmonth)
: ("0" + tmonth);
return tyear + "-" + strtmonth + "-" + "01";
}

/**
* 功能:得到指定月份的月初 格式为:xxxx-yy-zz (eg: 2007-12-01)<br>
*
* @param String
* @return String
*/
public static int getMonthCountBySQU(String start, String end) {
int syear = Integer.parseInt(getDateByFormat(getDateByStrToYMD(start),
YEAR));
int smonth = Integer.parseInt(getDateByFormat(getDateByStrToYMD(start),
MONTH));
int eyear = Integer.parseInt(getDateByFormat(getDateByStrToYMD(start),
YEAR));
int emonth = Integer.parseInt(getDateByFormat(getDateByStrToYMD(start),
MONTH));
return (eyear - syear) * 12 + (emonth - smonth) + 1;
}

/**
* 获得时间序列 EG:2008-01-01~2008-01-31,2008-02-01~2008-02-29
*/
public static List getMonthSqu(String fromDate, String toDate) {
List list = new ArrayList();
int count = getMonthCountBySQU(fromDate, toDate);
int syear = Integer.parseInt(getDateByFormat(
getDateByStrToYMD(fromDate), YEAR));
int smonth = Integer.parseInt(getDateByFormat(
getDateByStrToYMD(fromDate), MONTH));
int eyear = Integer.parseInt(getDateByFormat(getDateByStrToYMD(toDate),
YEAR));
String startDate = fromDate;
String endDate = "";
for (int i = 1; i <= count; i++) {
if (syear <= eyear) {
startDate = getStartOfMonth(syear, smonth);
endDate = getEndOfMonth(syear, smonth);
list.add(startDate + "~" + endDate);
System.out.println(startDate + "~" + endDate);
if (smonth == 13) {
smonth = 1;
syear++;
}
smonth++;
}
}
return list;
}
/**
* 通过传入的时间来获得所属周内的时间
* @param start
* @param num
* @return
*/
public static String getDateOFWeekByDate(String start, int num) {
Date dd = getDateByStrToYMD(start);
Calendar c = Calendar.getInstance();
c.setTime(dd);
if (num==1) // 返回星期一所在的日期
c.set(Calendar.DAY_OF_WEEK, Calendar.MONDAY);
else if (num==2) // 返回星期二所在的日期
c.set(Calendar.DAY_OF_WEEK, Calendar.TUESDAY);
else if (num==3) // 返回星期三所在的日期
c.set(Calendar.DAY_OF_WEEK, Calendar.WEDNESDAY);
else if (num==4) // 返回星期四所在的日期
c.set(Calendar.DAY_OF_WEEK, Calendar.THURSDAY);
else if (num==5) // 返回星期五所在的日期
c.set(Calendar.DAY_OF_WEEK, Calendar.FRIDAY);
else if (num==6) // 返回星期六所在的日期
c.set(Calendar.DAY_OF_WEEK, Calendar.SATURDAY);
else if (num==0) // 返回星期日所在的日期
c.set(Calendar.DAY_OF_WEEK, Calendar.SUNDAY);
return getDateByFormatYMD(c.getTime());
}
}
分享到:
评论

相关推荐

    java的Date类型转换成MySQL的DateTime类型.docx

    ### Java的Date类型转换成MySQL的DateTime类型 在软件开发特别是网络游戏开发中,记录关键时间点(如游戏开始时间和结束时间)并将其保存至数据库是非常常见的需求。由于Java中的`java.util.Date`类型与MySQL数据库...

    java实体转mysql建表语句

    首先,分析实体类的属性,然后根据属性类型选择对应的MySQL数据类型,比如`String`对应`VARCHAR`,`int`对应`INT`,`Date`对应`DATE`或`TIMESTAMP`等。同时,别忘了添加主键、外键、索引等约束。 6. **数据类型映射...

    mysql时间类型对应的java类型1

    - `java.util.Date`(Java的日期时间类)可以转换为`java.sql.Date`、`java.sql.Time`或`java.sql.Timestamp`,通过`SimpleDateFormat`进行格式化。 - `java.time.*`(Java 8引入的新日期时间API)的类如`...

    String和Date的转换

    在Java编程语言中,`String`和`Date`类型的转换是常见的操作,特别是在处理日期和时间数据时。这里我们将深入探讨如何在`String`和`Date`之间进行转换,以及如何利用`DateFormat`和`SimpleDateFormat`类进行格式化。...

    Java数据类型和MySql数据类型对应一览

    在 Java 中,字符串类型对应的是 java.lang.String 类型。在 MySql 中,字符串类型对应的是 VARCHAR、NVARCHAR、CHAR、NCHAR 等类型。其中,VARCHAR 类型用于存储可变长度的字符串,NVARCHAR 类型用于存储 Unicode ...

    java代码将mysql表数据导入HBase表

    本文将详细介绍如何使用Java代码实现这一过程,包括样例MySQL表和数据,以及HBase表的创建。 首先,我们需要了解MySQL和HBase的基本概念。MySQL是一种关系型数据库管理系统,它基于ACID(原子性、一致性、隔离性和...

    MySql于Java数据类型对应列表

    ### MySQL与Java数据类型对应详解 #### 概述 在进行数据库操作时,尤其是在使用Java进行MySQL数据库开发的过程中,正确地映射数据类型是至关重要的一步。本文将详细介绍MySQL中的各种数据类型及其在Java中的对应...

    Java数据类型和MySql数据类型对应表

    Java 数据类型和 MySql 数据类型对应表 在 Java 编程中,了解 Java 数据类型和 MySql 数据类型的对应关系非常重要。这是因为在 Java 应用程序中,我们经常需要与数据库进行交互,而 MySql 是一种常用的关系数据库...

    Java连接MYSQL 数据库的连接步骤

    【Java连接MYSQL数据库的连接步骤详解】 在Java编程中,连接MySQL数据库是常见的操作,用于实现数据的存储和检索。以下是一步一步的详细指南: 首先,确保你已经安装了JDK,通常推荐版本为JDK1.5或更高。JDK提供了...

    JAVA和MYsql时间格式格式

    在编程世界中,Java 和 MySQL 是两个非常重要的技术,它们在处理时间日期格式时有着各自的标准和方法。本文将深入探讨 Java 和 MySQL 中的时间日期格式化,并提供实用的知识点,帮助开发者更好地理解和应用。 首先...

    java+MySQL用户管理系统

    此代码主要是用JDBC和MySQL数据库完成一个简单的用户管理系统,系统的设计模式采用工场模 式和代 理模式,此代码很适合初学Java者。 运行方法: 1.运行需要启动MySQL数据库 2.创建数据库名为zhaochao和表名为...

    Java读取Excel内容并导入MySQL

    读取单元格内容时,需要根据单元格类型(如STRING, NUMERIC, DATE等)进行转换。例如,数字单元格可能需要转换为Double类型,日期单元格可能需要转换为java.util.Date。 接下来,我们需要将读取到的数据导入到MySQL...

    Mysql、orcale 中的数据类型与java中的数据类型对应表.pdf

    Mysql、Oracle 中的数据类型与 Java 中的数据类型对应表 MySQL 和 Oracle 是两种常用...本文详细介绍了 Oracle 中的 Number 和 Date 类型与 Java 中的数据类型对应关系,并对 MySQL 中的数据类型也进行了简单的介绍。

    java连接mysql

    ### Java 连接 MySQL 数据库详解 在 IT 领域中,Java 与 MySQL 的结合是非常常见的场景之一。无论是企业级应用还是个人项目开发,掌握如何使用 Java 来连接并操作 MySQL 数据库都是非常必要的技能。本文将详细介绍 ...

    Java中数据类型和MYSQL中数据类型的对比

    例如,使用 Java 的 `PreparedStatement` 设置参数时,可能需要将 `java.sql.Date` 转换为 `DATE` 类型,或者将 `String` 转换为 `VARCHAR`。 对比 Java 和 MySQL 数据类型时,开发者需要考虑存储需求、数据精度、...

    java、mysql以及oracle数据类型对照表

    例如,Java的String对应MySQL的VARCHAR或Oracle的VARCHAR2,Java的Integer对应MySQL的INT或Oracle的NUMBER。 对比三者的数据类型,可以发现一些共性,如整数类型都有对应的表示,但细节上有所不同。例如,Java的int...

    mysql数据库修改添加Date格式列的方法

    在MySQL数据库中,修改或添加一个...通过以上步骤,你可以在MySQL数据库中创建、修改和操作Date格式的列,并在Java应用程序中进行相应的处理。确保对数据库操作进行适当的安全性和性能优化,以保证系统的稳定性和效率。

    java_mysql_数据类型对照.doc

    1. **VARCHAR**:在MySQL中表现为可变长度字符串,对应Java中的`java.lang.String`类型,JDBC类型为12。适用于存储不固定长度的文本数据,如姓名、地址等。 2. **CHAR**:固定长度的字符串,同样对应Java中的`java...

Global site tag (gtag.js) - Google Analytics