當前位置:首頁 » 編程語言 » sql里extract
擴展閱讀
webinf下怎麼引入js 2023-08-31 21:54:13
堡壘機怎麼打開web 2023-08-31 21:54:11

sql里extract

發布時間: 2022-08-10 01:39:31

sql語句如何根據出生日期計算年齡

第一種:
一張人員信息表裡有一人生日(Birthday)列,跟據這個列,算出該人員的年齡
datediff(year,birthday,getdate())
例:birthday = '2003-3-8'
getDate()= '2008-7-7'
結果為:5
這樣結果是會返回該人員的大概年齡,但不精確.不會精確到月或日.
按照上面測試的日期,該人員的實際年齡應該還不滿5歲。在需要精確年齡的時候,就會有錯.
第二種:
FLOOR(datediff(DY,birthday,getdate())/365.25)
FLOOR函數:
FLOOR(expr) 返回小於或等於expr的最大整數.FLOOR(1.1)返回1,FLOOR(-1.1)返回-2,FLOOR(1)返回1
這樣就可以精確算出,該人員當前實際年齡了.
測試:
birthday = '2000-7-8'
getdate()= '2007-7-7'
算出結果為:6

在Oracle中,要獲得日期中的年份,例如把sysdate中的年份取出來。
一種常用的方法是:to_number(to_char(sysdate,'yyyy'))
還有一種更好的方法,那就是使用oracle提供的Extract函數,使用方法是:
extract(year from sysdate) ,此方法獲得的結果是數值型的 ,這種方法省掉了類型轉換,更加簡潔。
相應的,要取得月份或日,可以用extract (month from sysdate) 和extract (day from sysdate)

Ⅱ sql extract什麼意思

select datepart(month,getdate())
提取當前月份

如果從表裡欄位中提取月份

select datepsrt(month,[日期欄位]) FROM [表名]

Ⅲ 請舉例說明在sql中如何獲取日期欄位中的月份(oracle下)

select to_char(sysdate,'yyyy-mm-dd hh24:mi:ss') from al;

運行上邊這個
sysdate是當前日期時間
yyyy是年,四位
mm是月份,二位
dd是日期。二位
hh24是以24小時算小時
mi是分鍾
ss是秒

這個就取出來了,不知道你哪不懂呢?

Ⅳ 關於sql提取月份(extract的用法)

ORACLE範例:
SELECT EXTRACT(YEAR FROM SYSDATE) FROM DUAL;// return Current Year
SELECT EXTRACT(MONTH FROM SYSDATE) FROM DUAL; //return Current Month
SELECT EXTRACT(DAY FROM SYSDATE) FROM DUAL; //return Current Day
SELECT EXTRACT(HOUR FROM SYSDATE) FROM DUAL;//Error
SELECT EXTRACT(HOUR FROM TIMESTAMP '2005-10-10 10:10:10') FROM DUAL;// Correct

SELECT EXTRACT(MINUTE FROM SYSDATE) FROM DUAL;//Error
SELECT EXTRACT(MINUTE FROM TIMESTAMP '2005-10-10 10:10:10') FROM DUAL;// Correct

以上是EXTRACT()函數的使用說明,有個很重要的部分.就是extract 抽取年月日部分和時分部分的使用方法是不同的.
EXTRACT(YEAR FROM SYSDATE)中FROM 的下一個參數是日期類型的時候可以抽取年月日.就是說這個參數是日期類型的時候就可以抽取年\月\日,而抽取不了時\分部分.抽取時分部分得在FROM 後面加帶TIMESTAMP 且後面加時間字元.

這里要注意,在(MINUTE FROM TIMESTAMP '2005-10-10 10:10:10')中,如果把'2005-10-10 10:10:10'用日期類型的欄位來代替並轉換成字元類型後,也是錯誤的,估計是這方法的問題.
比如(MINUTE FROM TIMESTAMP to_date(to_char(日期類型,'YYYY-MM-DD hh24:mi:ss'),'YYYY-MM-DD hh24:mi:ss')),這樣執行不了的.

如果真要從日期類型的欄位中抽取時\分部分用to_char() 函數就可以了.比如to_char(日期類型,'hh24:mi')

Ⅳ 運行下面的SQL語句時出錯了,出錯地方:extract(month from to_date(t.TASK_STARTDATE,'yyyy

extract(month from 後邊應該直接跟日期格式就可以,你的t.TASK_STARTDATE欄位類型不是date???改成:
extract(month fromt.TASK_STARTDATE)= '12'

Ⅵ sql資料庫中欄位為文本類型比如(2012-02-18),現在想篩選所有小於當前日期的數據(之篩選月日)

把文本類型轉化成時間類型再比較就行吧
convert(datetime,欄位名,120)<convert(datetime,'2012-2-18',120)
只篩選月日,不計算年的話,可以用sunstring把表中所有文本時間都賦成同一年的,再比較

Ⅶ SQL如何取年月

1、首先大部分都會使用的就是獲取當前日期了,getdate直接用。

Ⅷ 請教pgsql中時間,統計相關的函數,如date

1.獲取系統時間函數
select now(); --2012-05-12 18:51:59.562+08
select current_timestamp; --2012-05-12 18:52:12.062+08
select current_date; --2012-05-12
select current_time; --18:53:23.234+08
2.時間的計算
--使用interval
select now()+interval '2 day'; --2012-05-14 20:05:32.796+08 2天後
select now()-interval '2 day'; --2012-05-10 20:07:23.265+08 2天前
select now()+interval '2 hour'; --2012-05-12 22:06:38.375+08 2小時後
....

interval可以不寫,其值可以是
Abbreviation Meaning
Y Years
M Months (in the date part)
W Weeks
D Days
H Hours
M Minutes (in the time part)
3.時間的截取
--使用extract extract(interval,timestamp);
select extract(year from now()); --2012
select extract(mon from now()); --5 5月份
...

interval值參考上面
4.時間的轉換
select timestamp '2012-05-12 18:54:54'; --2012-05-12 18:54:54
select date '2012-05-12 18:54:54'; --2012-05-12
select time '2012-05-12 18:54:54'; --18:54:54
select TIMESTAMP WITH TIME ZONE '2012-05-12 18:54:54'
--2012-05-12 18:54:54+08

--與unix時間戳的轉換
SELECT TIMESTAMP 'epoch' + 1341174767 * INTERVAL '1 second';
--2012-07-01 20:32:47

Ⅸ sql獲取當前日期的日

oracle中實現如下:
1、查詢當前日期的天數
select
sysdate
as
當前時間,extract(day
from
sysdate)
as
天數
from
daul;
2、查詢當前日期前7天
select
to_char(sysdate-7,'yyyy-mm-dd
')||'00:00:00'
start_time,to_char(sysdate-7,'yyyy-mm-dd
')||'23:59:59'
end_time
from
al
3、查詢當前日期前30天
select
to_char(sysdate-30,'yyyy-mm-dd
')||'00:00:00'
start_time,to_char(sysdate-30,'yyyy-mm-dd
')||'23:59:59'
end_time
from
al