時(shí)間日期字段在數(shù)據(jù)庫(kù)底層都是以時(shí)間戳的形式存儲(chǔ)的,日期比較其實(shí)就簡(jiǎn)單的轉(zhuǎn)換成了時(shí)間戳的比較, 也就是數(shù)字的比較
成都創(chuàng)新互聯(lián)公司主營(yíng)平潭網(wǎng)站建設(shè)的網(wǎng)絡(luò)公司,主營(yíng)網(wǎng)站建設(shè)方案,app開(kāi)發(fā)定制,平潭h5微信小程序開(kāi)發(fā)搭建,平潭網(wǎng)站營(yíng)銷推廣歡迎平潭等地區(qū)企業(yè)咨詢
時(shí)間戳就是 格林威治時(shí)間1970年01月01日00時(shí)00分00秒到指定日期時(shí)間之間的秒數(shù)
2012-01-11 00:00:00的時(shí)間戳就是1326211200比較時(shí)間字段,底層實(shí)際比較的就是這個(gè)數(shù)字的時(shí)間戳
兩個(gè)日期型直接相減是天數(shù),select to_date(' 2012-01-08','yyyy-mm-dd')-to_date('2010-12-12','yyyy-mm-dd') from dual
如果涉及年數(shù),你要考慮閏年非閏年。。。。一般不會(huì)比較年,大致的話你就除365天就是了。
這個(gè)屬于oracle時(shí)間函數(shù)的用法
在oracle里,日期格式是一種特殊的東西
這里有一個(gè)日期轉(zhuǎn)換函數(shù)
select to_char(日期,'yyyy-mm-dd hh24:mi:ss') from tablename;
這里的to_char就是將日期型轉(zhuǎn)換成字符型的一個(gè)函數(shù),轉(zhuǎn)換成的格式就是
2010-08-23 17:51:20
當(dāng)然你可以將這個(gè)日期轉(zhuǎn)換成其他,如:
select to_char(日期,'yyyy-mm-dd') from tablename;
查出來(lái)的結(jié)果2010-08-23
所以你要根據(jù)這個(gè)日期來(lái)查東西就可以這么用
select * from tablename where to_char(日期,'yyyymmdd')between '20100801' and '20100823'
這個(gè)就是查日期8月1日到8月23日的數(shù)據(jù)
select * from tablename where to_char(日期,'yyyymmdd') = '20100801'
這個(gè)就是查8月1日的數(shù)據(jù)
其他不懂的你再問(wèn)吧
-------補(bǔ)充------
你把你寫的東西粘貼一下,也好幫你分析啊
你后邊的" + model.Csrq + "參數(shù)傳進(jìn)來(lái)的是什么東西?
---------補(bǔ)充2-------
'yyyy-mm-dd 24hi:mi:ss'
這個(gè)地方錯(cuò)了,應(yīng)改成
'yyyy-mm-dd hh24:mi:ss'
不是24hi
是存儲(chǔ)過(guò)程里面的 IF/ELSE ? 還是簡(jiǎn)單的 DECODE ?
SQL DECLARE
2 testvalue INT;
3 BEGIN
4 testvalue := 100;
5
6 IF testvalue 100 THEN
7 dbms_output.put_line( '100+' );
8 ELSIF testvalue = 100 THEN
9 dbms_output.put_line( '100' );
10 ELSE
11 dbms_output.put_line( '100-' );
12 END IF;
13
14 END;
15 /
100
PL/SQL procedure successfully completed.
SQL SELECT
2 DECODE(GROUPING(sale_item), 1, 'ALL', sale_item) AS iten,
3 SUM(sale_money) AS money
4 FROM
5 sale_report
6 GROUP BY
7 ROLLUP(sale_item);
ITEN MONEY
------ ----------
A 733285
B 2382
C 5738
ALL 741405
用to_char函數(shù)即可。
如emp表中數(shù)據(jù)如下:
要查詢hiredate的日期為1981年1月1日到1981年5月1日之間的數(shù)據(jù),可用如下語(yǔ)句:
select * from emp where to_char(hiredate,'yyyy-mm-dd') between '1981-01-01' and '1981-05-01';