本来在设计数据库的时候,我开始想设置一些datetime格式的字段,感觉转化起来麻烦,就做成char类型了,"yyyy-mm-dd"是这样的统一写法,如果需要这个字符字段与时间进行转化时,可以用 convert 函数,convert可以对任意两种格式转变,这里只是正好利用到它了,我想让这个字符字段的时间和现在时间比较,就用了下面这句:
select * from 表名 where convert(varchar(10),CONVERT(DATETIME,一个字符类的字段),120)<=convert(varchar(10),CONVERT(DATETIME,getdate()),120)
首先,把 字符 转到 datetime ,CONVERT(DATETIME,一个字符类的字段);
然后,截取相应 年 月 日 部分,convert(varchar(10),CONVERT(DATETIME,一个字符类的字段),120),
另外一句,convert(varchar(10),CONVERT(DATETIME,getdate()),120) ,正好把当前时间得到,截取 年 月 日 部分,直接比较!
上面这个查询可以找到位于当前时间以前的日期,虽然字段是 char ,但最后 办法 被找到,还是成功了。
Sql Server2000 时间转字符串(40)种格式 日期时间转字符串的语句和结果------------------------------------------------------------------------
Select CONVERT(varchar(100), GETDATE(), 0): 04 11 2011 10:57AM
Select CONVERT(varchar(100), GETDATE(), 1): 04/11/11
Select CONVERT(varchar(100), GETDATE(), 2): 11.04.11
Select CONVERT(varchar(100), GETDATE(), 3): 11/04/11
Select CONVERT(varchar(100), GETDATE(), 4): 11.04.11
Select CONVERT(varchar(100), GETDATE(), 5): 11-04-11
Select CONVERT(varchar(100), GETDATE(), 6): 11 04 11
Select CONVERT(varchar(100), GETDATE(), 7): 04 11, 11
Select CONVERT(varchar(100), GETDATE(), 8): 10:57:46
Select CONVERT(varchar(100), GETDATE(), 9): 04 11 2011 10:57:46:827AM
Select CONVERT(varchar(100), GETDATE(), 10): 04-11-11
Select CONVERT(varchar(100), GETDATE(), 11): 11/04/11
Select CONVERT(varchar(100), GETDATE(), 12): 110411
Select CONVERT(varchar(100), GETDATE(), 13): 11 04 2011 10:57:46:937
Select CONVERT(varchar(100), GETDATE(), 14): 10:57:46:967
Select CONVERT(varchar(100), GETDATE(), 20): 2011-04-11 10:57:47
Select CONVERT(varchar(100), GETDATE(), 21): 2011-04-11 10:57:47.157
Select CONVERT(varchar(100), GETDATE(), 22): 04/11/11 10:57:47 AM
Select CONVERT(varchar(100), GETDATE(), 23): 2011-04-11
Select CONVERT(varchar(100), GETDATE(), 24): 10:57:47
Select CONVERT(varchar(100), GETDATE(), 25): 2011-04-11 10:57:47.250
Select CONVERT(varchar(100), GETDATE(), 100): 04 11 2011 10:57AM
Select CONVERT(varchar(100), GETDATE(), 101): 04/11/2011
Select CONVERT(varchar(100), GETDATE(), 102): 2011.04.11
Select CONVERT(varchar(100), GETDATE(), 103): 11/04/2011
Select CONVERT(varchar(100), GETDATE(), 104): 11.04.2011
Select CONVERT(varchar(100), GETDATE(), 105): 11-04-2011
Select CONVERT(varchar(100), GETDATE(), 106): 11 04 2011
Select CONVERT(varchar(100), GETDATE(), 107): 04 11, 2011
Select CONVERT(varchar(100), GETDATE(), 108): 10:57:49
Select CONVERT(varchar(100), GETDATE(), 109): 04 11 2011 10:57:49:437AM
Select CONVERT(varchar(100), GETDATE(), 110): 04-11-2011
Select CONVERT(varchar(100), GETDATE(), 111): 2011/04/11
Select CONVERT(varchar(100), GETDATE(), 112): 20110411
Select CONVERT(varchar(100), GETDATE(), 113): 11 04 2011 10:57:49:513
Select CONVERT(varchar(100), GETDATE(), 114): 10:57:49:547
Select CONVERT(varchar(100), GETDATE(), 120): 2011-04-11 10:57:49
Select CONVERT(varchar(100), GETDATE(), 121): 2011-04-11 10:57:49.700
Select CONVERT(varchar(100), GETDATE(), 126): 2011-04-11T10:57:49.827
jsp 里面可以这样相互转换 这两种数据:
//String --->time
String str = "20110723" ;
DateFormat date = new SimpleDateFormat("yyyy-mm-dd");
Date d = date.parse(str);
//time--> Strng
DateFormat date = new SimpleDateFormat("yyyy-mm-dd");
String str = date.fromat(Date date);
这一句话 得到当前时间:就这一句:
String date=new SimpleDateFormat("yyyy-MM-dd").format(Calendar.getInstance().getTime());
不少时候我都是字符串类型的数据,平时往里加需要人输入的数据时,感觉还方便,必要时把它转一下,换成时间。
刚才提到的是在数据库中时间的比较,在JSP中怎么办?
java.util.Date nowdate=new java.util.Date(); //获取当前时间,又是一种方法
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd", Locale.CHINA); //设置一种时间转化的格式
Date d = sdf.parse(da); //da 是我提供的string 时间值
boolean flag = d.before(nowdate); //da所表示的时间与当前时间比较,得到一个布尔值
if(flag) //如若为正,说明我提供的时间确实比当前时间要小
{
b=true;
}
问题解决