西西軟件園多重安全檢測(cè)下載網(wǎng)站、值得信賴(lài)的軟件下載站!
軟件
軟件
文章
搜索

首頁(yè)西西教程數(shù)據(jù)庫(kù)教程 → SqlServer Oracle 時(shí)間函數(shù) 同C++ time_t 的轉(zhuǎn)換

SqlServer Oracle 時(shí)間函數(shù) 同C++ time_t 的轉(zhuǎn)換

相關(guān)軟件相關(guān)文章發(fā)表評(píng)論 來(lái)源:aqhistory時(shí)間:2010/3/9 19:46:30字體大小:A-A+

作者:佚名點(diǎn)擊:610次評(píng)論:5次標(biāo)簽: Oracle

  • 類(lèi)型:數(shù)據(jù)庫(kù)類(lèi)大。42.1M語(yǔ)言:中文 評(píng)分:4.2
  • 標(biāo)簽:
立即下載

做一個(gè)自動(dòng)任務(wù),需要查詢(xún)指定期限內(nèi)數(shù)據(jù),比如按照自然月,按照自然日,按照自然周,需要支持Oracle 和 SqlServer數(shù)據(jù)庫(kù)。
數(shù)據(jù)庫(kù)中表字段receivetime,由C++負(fù)責(zé)寫(xiě)入,內(nèi)容為time_t的32位值,也就是1970年到現(xiàn)在的秒數(shù)。

研究了一天,得出如下語(yǔ)句:

 

對(duì)于SqlServer,

查詢(xún)前一天的數(shù)據(jù),

select * from table_name where datediff ( day, dateadd(day, (ReceiveTime+8*3600)/60/60/24 - 1, '19700101'), getdate() ) = 2;
請(qǐng)關(guān)注其中的8*3600,這是因?yàn)椋琒qlServer中,按照UTC計(jì)算標(biāo)準(zhǔn)時(shí)間,(ReceiveTime)/60/60/24計(jì)算的標(biāo)準(zhǔn)時(shí)間,但是數(shù)據(jù)庫(kù)服務(wù)器時(shí)區(qū)是東八區(qū),故需要加上這個(gè)值。

以下同理,不解釋。

查詢(xún)前一周的數(shù)據(jù),

 

查詢(xún)前一周
SELECT *
FROM tablename
WHERE datediff
(day,
dateadd
(day,
(ReceiveTime + 8 * 3600) / 60 / 60 / 24,
'1970-01-01 00:00:00'),
getdate ()) >= DatePart (Weekday, getdate ()) + 1
and
datediff
(day,
dateadd
(day,
(ReceiveTime + 8 * 3600) / 60 / 60 / 24,
'1970-01-01 00:00:00'),
getdate ()) <= DatePart (Weekday, getdate ()) + 8;

 

查詢(xún)前一月的數(shù)據(jù),

 

查詢(xún)前一月
SELECT *
FROM tablename
WHERE datediff
(month,
dateadd
(day,
(ReceiveTime + 8 * 3600) / 60 / 60 / 24,
'1970-01-01 00:00:00'),
getdate ()) = 1;

 

 

對(duì)于Oracle數(shù)據(jù)庫(kù)


查詢(xún)前一天:

 

查詢(xún)前一天
SELECT count(*)
FROM tablename
WHERE receivetime >=
((TRUNC (SYSDATE - 1, 'dd') - TO_DATE ('19700101', 'yyyymmdd')
)
* 24
* 3600 - 8 * 3600)
AND receivetime <
( (TRUNC (SYSDATE, 'dd') - TO_DATE ('19700101', 'yyyymmdd')
) * 24 * 3600 - 8 * 3600);

 

查詢(xún)前一周:

查詢(xún)前一周
SELECT count(*)
FROM tablename
WHERE receivetime <
( ( TRUNC (SYSDATE - TO_NUMBER (TO_CHAR (SYSDATE, 'W')) , 'dd')
- TO_DATE ('19700101', 'yyyymmdd')
)
* 24
* 3600 - 8 * 3600 )
AND receivetime >=
(( TRUNC (SYSDATE - TO_NUMBER (TO_CHAR (SYSDATE, 'W')) - 7, 'dd')
- TO_DATE ('19700101', 'yyyymmdd')
)
* 24
* 3600 - 8 * 3600 );
查詢(xún)前一月:


查詢(xún)前一月
SELECT count(*)
FROM tablename
WHERE receivetime >=
( ((trunc(last_day( add_months(sysdate, -2 )),'dd') + 1) - TO_DATE ('19700101', 'yyyymmdd')) * 24 * 3600 - 8 * 3600 )
AND receivetime < (((trunc(last_day( add_months(sysdate, -1 )),'dd') + 1) - TO_DATE ('19700101', 'yyyymmdd')) * 24 * 3600 - 8 * 3600);

    相關(guān)評(píng)論

    閱讀本文后您有什么感想? 已有人給出評(píng)價(jià)!

    • 8 喜歡喜歡
    • 3 頂
    • 1 難過(guò)難過(guò)
    • 5 囧
    • 3 圍觀圍觀
    • 2 無(wú)聊無(wú)聊

    熱門(mén)評(píng)論

    最新評(píng)論

    發(fā)表評(píng)論 查看所有評(píng)論(5)

    昵稱(chēng):
    表情: 高興 可 汗 我不要 害羞 好 下下下 送花 屎 親親
    字?jǐn)?shù): 0/500 (您的評(píng)論需要經(jīng)過(guò)審核才能顯示)