① 怎么修改数据库的时间
具体操作步骤如下:
1、第一步,打开sql数据库,新建一个表。格式原因,以下的date_time和time_time为日期类型,如图所示。
② SQL2008数据库有时间限制么
压根就没有时间上的限制,还有你安装的版本是根据你的安装包来决定
③ 数据库如何改时间
找到数据库,再找你这个对应的表,再找到你这个注册时间对应的字段
再看什么格式吧,有些是用unix记录也有直接记录字符啥的
什么也没,谁也不可能猜得到
④ 数据库 存储时间
数据库存储时间有两种方式:
1、 使用Timestamp,则会在数据库里存储:2013-07-16 07:20:01。
在不同时区,显示的都是2013-07-16 07:20:01,但其实他们并不是同一时间了。
2、存储事件发生的时间毫秒值,在不同时区解析出来的时间表示不一样,但表达都是同一时间,能解决时区问题。
⑤ sql数据库中的时间类型
满意答案。9级2010-11-29使用nvarchar对于前期的实现比较容易,但性能及后期使用及后期需求开发比较困难
如按时间排序,数据库类型校验,根据时间段查询,根据时间的分组统计等等方面造成的影响比较大
追问:
如果用datetime
我的MyEclipse用Hibernate转换时是timestamp类型的
在用模糊查询查时间时有点纠结啊
老是报不能转换的错误
回答:
用hibernate啊
那你在配置文件注入类型不用时间戳
改成这个试试java.util.Date
补充:
hibernate项目好几年没做过了
原来在数据库时间建模和操纵时习惯用java.sql.Timestamp与数据库中DateTime对应,但业务流通层,模型里还是用java.util.Date
因为这些时间直接的转换都是一样的方便,而且这样做逻辑理解上比较直观
记忆中是没有出现过错误,Timestamp在现在使用数据源时经常使用
追问:
知道用date类型的哇
但是hibernate自动生成的就是timestamp类型
不改配置文件
就用timestamp怎么做啊?总不能每次生成就改一次配置文件吧.....
追问:
还有我做的是模糊查询
在form里面时间又是string类型的
转换有点麻烦
回答:
你在createSQLQuery方法后面在使用
addScalar方法传入你datetime的实体对应名和hibernate类型试一下吧
补充:
这个的确比较麻烦,你可以写个公共转换方法进行转换
就是字符串根据你的时间格式进行取出时间long
然后转换就可以了
大概这样子
SimpleDateFormat
simpleDateFormat
=
new
SimpleDateFormat();
⑥ 数据库里的时间格式
方法一:通过函数to_char实现时间格式的转换
SQL> select sysdate from al;
SYSDATE
------------
17-JUN-15
SQL> select to_char(sysdate,'yyyy-mm-dd hh24:mi:ss') from al;
TO_CHAR(SYSDATE,'YYYY-MM-DDHH24:MI:SS'
--------------------------------------
2015-06-17 14:08:21
方法二:更改会话参数
alter session set nls_date_format='yyyy-mm-dd hh24:mi:ss';
方法二:更改参数文件
可以在 init.ora 中加上一行
nls_date_format='yyyy-mm-dd hh24:mi:ss'
或者
alter system set nls_date_format='yyyy-mm-dd hh24:mi:ss’ scope=spfile;
⑦ 数据库时间处理
1.分钟转成不同格式的时间
数据库里有个字段 存的分钟
① 现在想显示成HH:MM格式 假设为514分钟
SELECT to_char((to_date('00:00','HH24:MI')+514/24/60),'HH24:MI') from al
输出结果:
08:34
②如果存的是秒 同理
SELECT to_char((to_date('00:00:00','HH24:MI:SS')+514/24/60/60),'HH24:MI:SS') from al
输出结果:
00:08:34
至于显示成其他的格式,也就不成问题了
2.时分相加
至于为什么要写这个,是因为Oracle里没有两个时间相加的处理,两个to_date相减可以,相加就出错了:
数据库里有两个字段 存的都是HH:MM格式的时间
假设一个是本月上午缺勤时间合计: 08:30(8个半小时)
另外一个是本月下午缺勤时间合计: 00:30(半小时)
现在想要总缺勤时间,显示成 HH:MM格式
做法有两种
① 正常的逻辑运算(代码或者PLSQL实现的应该比这个容易的多,仅限于SQL实现):
select LPAD((substr('08:30',1,2) + substr('00:30',1,2)+(substr('08:30',length('08:30')-1,2)+substr('00:30',length('00:30')-1,2))/60),2,'0') || ':' || LPAD(mod((substr('08:30',length('08:30')-1,2)+substr('00:30',length('00:30')-1,2)),60),2,'0') from al
看起来很复杂,而实际上就是把小时相加,分钟相加,之后把分钟满60的小时进位,取余的显示:
取前两位相加得小时:(是因为不确定数据储存的格式是不是严格的HH:MM,而不能借正则分隔“:”)
(substr('08:30',1,2) + substr('00:30',1,2)
取后两位相加得分钟:
(substr('08:30',length('08:30')-1,2)+substr('00:30',length('00:30')-1,2))
把分钟满60的小时进位得显示用的小时: (substr('08:30',length('08:30')-1,2)+substr('00:30',length('00:30')-1,2))/60
现在小时算完了,不足两位左补零:
LPAD((substr('08:30',1,2) + substr('00:30',1,2)+(substr('08:30',length('08:30')-1,2)+substr('00:30',length('00:30')-1,2))/60),2,'0')
把分钟取余得显示用的分钟:
mod((substr('08:30',length('08:30')-1,2)+substr('00:30',length('00:30')-1,2)),60)
现在分钟算完了,不足两位左补零: LPAD(mod((substr('08:30',length('08:30')-1,2)+substr('00:30',length('00:30')-1,2)),60),2,'0')
最后连上“:”就变成上述的SQL,得到的时间用HH:MM显示了
输出结果:
09:00
②函数实现:
SELECT to_char(to_date('00:00','HH24:MI') +(((to_date('08:30','HH24:MI') - trunc(to_date('08:30','HH24:MI'))) *24*60 + (to_date('00:30','HH24:MI') - trunc(to_date('00:30','HH24:MI'))) *24*60)/24/60),'HH24:MI') from al
首先把HH:MM的换成数值:
to_date('08:30','HH24:MI') - trunc(to_date('08:30','HH24:MI'))
输出结果:.(其实是代表了一个时间,是以天为单位的)
现在*24*60 把数值换成分钟:
(to_date('08:30','HH24:MI') - trunc(to_date('08:30','HH24:MI'))) *24*60
输出结果:510
也就是把08:30 变成了510分
(to_date('00:30','HH24:MI') - trunc(to_date('00:30','HH24:MI'))) *24*60
输出结果:30(时间是.)这两个
也就是把00:30 变成了30分
然后把两个分钟相加:
((to_date('08:30','HH24:MI') - trunc(to_date('08:30','HH24:MI'))) *24*60 + (to_date('00:30','HH24:MI') - trunc(to_date('00:30','HH24:MI'))) *24*60)
输出结果:540
剩下的就是显示处理了,和1里面的做法一致:
to_char(to_date('00:00','HH24:MI') +(((to_date('08:30','HH24:MI') - trunc(to_date('08:30','HH24:MI'))) *24*60 + (to_date('00:30','HH24:MI') - trunc(to_date('00:30','HH24:MI'))) *24*60)/24/60),'HH24:MI')
⑧ 数据库更新时间
数据库更新时间
如果是更新成当前时间的话:
sql:update tablename set timeNew =sysdate;
如果是更新成固定的时间或者是固定格式的时间,可以通过TO_DATE语句实现:
sql:update tablename set timeNew =TO_DATE('2015-12-21', 'YYYY-MM-DD');
⑨ sql数据库时间如何比较
SELECT DATEDIFF(DAY, (SELECT table.dtime FROM table WHERE ID=1 )
,GETDATE())
//
(SELECT table.dtime FROM table WHERE ID=1 )
是你要从数据库中提取的时间,重新自定义一下
GETDATE()是今天的日期
总的就是表示从数据库里提取的时间到今天的差距
如果是想比较数据库和数据库里的时间,就按照上面的方法再写一次
⑩ 如何处理数据库的时间
oracle为例吧:
1.分钟转成不同格式的时间
数据库里有个字段 存的分钟
① 现在想显示成HH:MM格式 假设为514分钟
SELECT to_char((to_date('00:00','HH24:MI')+514/24/60),'HH24:MI') from al
输出结果:
08:34
②如果存的是秒 同理
SELECT to_char((to_date('00:00:00','HH24:MI:SS')+514/24/60/60),'HH24:MI:SS') from al
输出结果:
00:08:34
至于显示成其他的格式,也就不成问题了
2.时分相加
至于为什么要写这个,是因为Oracle里没有两个时间相加的处理,两个to_date相减可以,相加就出错了:
数据库里有两个字段 存的都是HH:MM格式的时间
假设一个是本月上午缺勤时间合计: 08:30(8个半小时)
另外一个是本月下午缺勤时间合计: 00:30(半小时)
现在想要总缺勤时间,显示成 HH:MM格式
做法有两种
① 正常的逻辑运算(代码或者PLSQL实现的应该比这个容易的多,仅限于SQL实现):
select LPAD((substr('08:30',1,2) + substr('00:30',1,2)+(substr('08:30',length('08:30')-1,2)+substr('00:30',length('00:30')-1,2))/60),2,'0') || ':' || LPAD(mod((substr('08:30',length('08:30')-1,2)+substr('00:30',length('00:30')-1,2)),60),2,'0') from al
看起来很复杂,而实际上就是把小时相加,分钟相加,之后把分钟满60的小时进位,取余的显示:
取前两位相加得小时:(是因为不确定数据储存的格式是不是严格的HH:MM,而不能借正则分隔“:”)
(substr('08:30',1,2) + substr('00:30',1,2)
取后两位相加得分钟:
(substr('08:30',length('08:30')-1,2)+substr('00:30',length('00:30')-1,2))
把分钟满60的小时进位得显示用的小时: (substr('08:30',length('08:30')-1,2)+substr('00:30',length('00:30')-1,2))/60
现在小时算完了,不足两位左补零:
LPAD((substr('08:30',1,2) + substr('00:30',1,2)+(substr('08:30',length('08:30')-1,2)+substr('00:30',length('00:30')-1,2))/60),2,'0')
把分钟取余得显示用的分钟:
mod((substr('08:30',length('08:30')-1,2)+substr('00:30',length('00:30')-1,2)),60)
现在分钟算完了,不足两位左补零: LPAD(mod((substr('08:30',length('08:30')-1,2)+substr('00:30',length('00:30')-1,2)),60),2,'0')
最后连上“:”就变成上述的SQL,得到的时间用HH:MM显示了
输出结果:
09:00
②函数实现:
SELECT to_char(to_date('00:00','HH24:MI') +(((to_date('08:30','HH24:MI') - trunc(to_date('08:30','HH24:MI'))) *24*60 + (to_date('00:30','HH24:MI') - trunc(to_date('00:30','HH24:MI'))) *24*60)/24/60),'HH24:MI') from al
同样看起来很复杂
首先把HH:MM的换成数值:
to_date('08:30','HH24:MI') - trunc(to_date('08:30','HH24:MI'))
输出结果:.(其实是代表了一个时间,是以天为单位的)
现在*24*60 把数值换成分钟:
(to_date('08:30','HH24:MI') - trunc(to_date('08:30','HH24:MI'))) *24*60
输出结果:510
也就是把08:30 变成了510分
(to_date('00:30','HH24:MI') - trunc(to_date('00:30','HH24:MI'))) *24*60
输出结果:30(时间是.)这两个
也就是把00:30 变成了30分
然后把两个分钟相加:
((to_date('08:30','HH24:MI') - trunc(to_date('08:30','HH24:MI'))) *24*60 + (to_date('00:30','HH24:MI') - trunc(to_date('00:30','HH24:MI'))) *24*60)
输出结果:540
剩下的就是显示处理了,和1里面的做法一致:
to_char(to_date('00:00','HH24:MI') +(((to_date('08:30','HH24:MI') - trunc(to_date('08:30','HH24:MI'))) *24*60 + (to_date('00:30','HH24:MI') - trunc(to_date('00:30','HH24:MI'))) *24*60)/24/60),'HH24:MI')
输出结果:
3. 不论是方法①还是方法②,这里都存在一个问题:如果时间相加之后超出23:59,系统就会报错,目前我用的涉及不到这个 就没写出来,如果有用到的直接再转成DD:HH:MM的格式就行了,也就是把小时数满24的进位取显示用的天
SELECT to_char(to_date('01 00:00','DD HH24:MI') +(((to_date('23:30','HH24:MI') - trunc(to_date('23:30','HH24:MI'))) *24*60 + (to_date('01:30','HH24:MI') - trunc(to_date('01:30','HH24:MI'))) *24*60)/24/60-1),'DD HH24:MI') from al
输出结果:01 01:00(25小时)
oracle 时间相减
select to_char((TO_DATE('1970-01-01', 'yyyy-MM-dd') +
(to_date('10:10:10', 'HH24:mi:ss') -
to_date('12:10:10', 'HH24:mi:ss'))), 'HH24:mi:ss')
from al;
对当前日期增加50分种
SQL> select sysdate, sysdate+numtodsinterval(50,’minute’) from al ;
SYSDATE SYSDATE+NUMTODSINTE
——————- ——————-
2010-10-14 21:39:12 2010-10-14 22:29:12
对当前日期增加45秒
SQL> select sysdate, sysdate+numtodsinterval(45,’second’) from al ;
SYSDATE SYSDATE+NUMTODSINTE
——————- ——————-
2010-10-14 21:40:06 2010-10-14 21:40:51
对当前日期增加3天
SQL> select sysdate, sysdate+3 from al ;
SYSDATE SYSDATE+3
——————- ——————-
2010-10-14 21:40:46 2010-10-17 21:40:46
对当前日期增加4个月
SQL> select sysdate, add_months(sysdate,4) from al ;
SYSDATE ADD_MONTHS(SYSDATE,
——————- ——————-
2010-10-14 21:41:43 2011-02-14 21:41:43
对当前日期增加一个小时:
SQL> select sysdate, sysdate+numtodsinterval(1,’hour’) from al ;
SYSDATE SYSDATE+NUMTODSINTE
——————- ——————-
2010-10-14 21:38:19 2010-10-14 22:38:19
对当前日期增加50分种