全國最多中醫師線上諮詢網站-台灣中醫網
發文 回覆 瀏覽次數:8265
推到 Plurk!
推到 Facebook!

當月跟上個月的人事資料該如何抓取出來

答題得分者是:TWY
qq33252000
一般會員


發表:12
回覆:21
積分:6
註冊:2010-07-03

發送簡訊給我
#1 引用回覆 回覆 發表時間:2010-09-28 11:59:34 IP:220.132.xxx.xxx 訂閱
資料庫oracle

SQL中
該如何抓取當月(比如說這個月是9月)和上個月(八月份),新進人員的資料

select * form people
where (date_no = (這裡怎麼需要怎麼饡寫??))
老大仔
尊榮會員


發表:78
回覆:837
積分:1088
註冊:2006-07-06

發送簡訊給我
#2 引用回覆 回覆 發表時間:2010-09-28 13:09:37 IP:59.120.xxx.xxx 未訂閱
請問您翻書、爬文了嗎??

===================引 用 qq33252000 文 章===================
資料庫oracle

SQL中
該如何抓取當月(比如說這個月是9月)和上個月(八月份),新進人員的資料

select * form people
where (date_no = (這裡怎麼需要怎麼饡寫??))
herbert2
尊榮會員


發表:58
回覆:640
積分:894
註冊:2004-04-16

發送簡訊給我
#3 引用回覆 回覆 發表時間:2010-09-28 14:26:37 IP:202.39.xxx.xxx 訂閱
date_no 若為 VARCHAR2 存 'yyyy/mm' 則 date_no = '2010/08' OR date_no = '2010/09' 或 date_no IN (''2010/08','2010/09')
date_no 若為 DATETIME 則 TO_CHAR(date_no,'yyyy/mm') IN ('2010/08','2010/09')

下次記得也要提出 Table 之 Column 之 Type,且此問題真的太『基本』了!
編輯記錄
herbert2 重新編輯於 2010-09-28 14:45:23, 註解 無‧
qq33252000
一般會員


發表:12
回覆:21
積分:6
註冊:2010-07-03

發送簡訊給我
#4 引用回覆 回覆 發表時間:2010-09-28 15:11:08 IP:220.132.xxx.xxx 訂閱
不好意思~我問題說的不是很明白
的確這樣看下去~問題真的太基本的@@
可我要問的不是這個意思

我今天要去抓系統時間(sysdate)
但是我只要他的日期(YYYYMMDD)
如果今天的日期是'20100911'就抓出'20100801~20100911'的資料出來

我看了您的寫法~~
TO_CHAR(date_no,'yyyy/mm') IN ('2010/08','2010/09')→這樣的寫法不就把他寫死了??
那今天是10月部就又要再改一次SQL指令???
有沒有可以讓他自己抓系統時間,去判別上個月到這個月

我有網查一些
"SELECT YEAR(ADD_MONTHS(日期,-1)) AS y, MOHTH(ADD_MONTHS(日期,-1))"
但這樣的寫法是呼也把他給寫死了~他的日期,我希望是系統自己抓時間,並不是我們自己輸入入期定死在那


===================引 用 herbert2 文 章===================
date_no 若為 VARCHAR2 存 'yyyy/mm' 則 date_no = '2010/08' OR date_no = '2010/09' 或 date_no IN (''2010/08','2010/09')
date_no 若為 DATETIME 則 TO_CHAR(date_no,'yyyy/mm') IN ('2010/08','2010/09')

下次記得也要提出 Table 之 Column 之 Type,且此問題真的太『基本』了!
qq33252000
一般會員


發表:12
回覆:21
積分:6
註冊:2010-07-03

發送簡訊給我
#5 引用回覆 回覆 發表時間:2010-09-28 15:12:48 IP:220.132.xxx.xxx 訂閱
不好意思~我想我的問題沒有說的很清楚~
或許就算說的很清楚,對您來說也是比較簡單的
但對新手來說,希望給個機會學習..謝謝您的指導


===================引 用 老大仔 文 章===================
請問您翻書、爬文了嗎??

===================引 用 qq33252000 文 章===================
資料庫oracle

SQL中
該如何抓取當月(比如說這個月是9月)和上個月(八月份),新進人員的資料

select * form people
where (date_no = (這裡怎麼需要怎麼饡寫??))
kuf41
中階會員


發表:14
回覆:45
積分:51
註冊:2006-12-03

發送簡訊給我
#6 引用回覆 回覆 發表時間:2010-09-28 15:25:57 IP:220.136.xxx.xxx 訂閱
不會Oracle,
MS SQL可以參考一下
select * from people
where convert(char(6),date_no,112)>=convert(char(6),dateadd(month,-1,getdate()),112)
and convert(char(8),date_no,112)<=convert(char(8),getdate(),112)

------
一切都為了明天
TWY
高階會員


發表:2
回覆:133
積分:152
註冊:2009-09-02

發送簡訊給我
#7 引用回覆 回覆 發表時間:2010-09-29 08:53:02 IP:59.120.xxx.xxx 訂閱
我猜想,你的困擾關鍵應該在於 Oracle add_months 這個指令吧,下面語法或許可以解決你的問題,請參考。

(假設 sysdate 是 2010/09/29 則會選出 2010/08/01~2010/09/29 的資料)
select * from YourTable
where EnterDate between to_date(to_char(add_months(sysdate,-1),'YYYYMM')||'01','YYYYMMDD')
and trunc(sysdate)


===================引 用 qq33252000 文 章===================
我看了您的寫法~~
TO_CHAR(date_no,'yyyy/mm') IN ('2010/08','2010/09')→這樣的寫法不就把他寫死了??
那今天是10月部就又要再改一次SQL指令???

編輯記錄
TWY 重新編輯於 2010-09-29 09:21:08, 註解 無‧
TWY 重新編輯於 2010-09-29 09:25:02, 註解 廢話刪除 哈‧
senso
高階會員


發表:5
回覆:126
積分:226
註冊:2003-11-27

發送簡訊給我
#8 引用回覆 回覆 發表時間:2010-09-29 09:13:53 IP:61.219.xxx.xxx 訂閱
http://www.techonthenet.com/oracle/functions/
參考Date Functions:稍微排列一下就能取得各種日期了

select * from people
where date_no between to_char(add_month(trunc(sysdate,'mm'),-1),'yyyymmdd') and to_char(sysdate,'yyyymmdd');


tobylin
一般會員


發表:1
回覆:15
積分:18
註冊:2009-12-25

發送簡訊給我
#9 引用回覆 回覆 發表時間:2010-09-29 09:49:29 IP:60.249.xxx.xxx 未訂閱
SQL> select to_char(add_months(trunc(sysdate,'mm'),-1),'yyyymmdd') from dual;
TO_CHAR(
--------
20100801
SQL>
TWY
高階會員


發表:2
回覆:133
積分:152
註冊:2009-09-02

發送簡訊給我
#10 引用回覆 回覆 發表時間:2010-09-29 09:55:25 IP:59.120.xxx.xxx 訂閱
這個網站不錯耶,整理的很詳細,找個時間複習一下,謝謝分享~

===================引 用 senso 文 章===================
http://www.techonthenet.com/oracle/functions/
參考Date Functions:稍微排列一下就能取得各種日期了

select * from people
where date_no between to_char(add_month(trunc(sysdate,'mm'),-1),'yyyymmdd') and to_char(sysdate,'yyyymmdd');


qq33252000
一般會員


發表:12
回覆:21
積分:6
註冊:2010-07-03

發送簡訊給我
#11 引用回覆 回覆 發表時間:2010-09-29 10:37:46 IP:220.132.xxx.xxx 訂閱
謝謝你的分享
這個網站真的不錯~我要抓走了
感激不進


===================引 用 senso 文 章===================
http://www.techonthenet.com/oracle/functions/
參考Date Functions:稍微排列一下就能取得各種日期了

select * from people
where date_no between to_char(add_month(trunc(sysdate,'mm'),-1),'yyyymmdd') and to_char(sysdate,'yyyymmdd');


qq33252000
一般會員


發表:12
回覆:21
積分:6
註冊:2010-07-03

發送簡訊給我
#12 引用回覆 回覆 發表時間:2010-09-29 10:40:55 IP:220.132.xxx.xxx 訂閱
恩恩~
我卡在add_months跟SYSdate
因為當時抓出來還包含了時間
因此卡很久~

謝謝您,解開我的疑問

===================引 用 TWY 文 章===================
我猜想,你的困擾關鍵應該在於 Oracle add_months 這個指令吧,下面語法或許可以解決你的問題,請參考。

(假設 sysdate 是 2010/09/29 則會選出 2010/08/01~2010/09/29 的資料)
select * from YourTable
where EnterDate between to_date(to_char(add_months(sysdate,-1),'YYYYMM')||'01','YYYYMMDD')
and trunc(sysdate)

senso
高階會員


發表:5
回覆:126
積分:226
註冊:2003-11-27

發送簡訊給我
#13 引用回覆 回覆 發表時間:2010-09-29 11:27:39 IP:61.219.xxx.xxx 訂閱
阿哈哈..我手殘少打一個s

===================引 用 tobylin 文 章===================
SQL> select to_char(add_months(trunc(sysdate,'mm'),-1),'yyyymmdd') from dual;
TO_CHAR(
--------
20100801
SQL>
系統時間:2024-03-29 20:31:21
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!