① 怎麼修改資料庫的時間
具體操作步驟如下:
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分種