Ⅰ sql中查出兩個日期之間的數據
查出兩個日期之間的數據的sql示例:
select * from table_name where date>'2010-1-1' and data<'2010-5-1';
其中table_name是表名,date是日期欄位,and符號表示且,連接兩個日期表示既滿足大於2010-1-1又滿足小於2010-5-1,在兩個之間的數據。
(1)sql日期返回兩日期之間擴展閱讀
常用查詢sql語句介紹:
1、查看錶結構
SQL>DESC emp;
2、 查詢所有列
SQL>SELECT * FROM emp;
3、查詢指定列
SQL>SELECT empmo, ename, mgr FROM emp;
SQL>SELECT DISTINCT mgr FROM emp; 只顯示結果不同的項
4、 查詢指定行
SQL>SELECT * FROM emp WHERE job='CLERK';
5、使用算術表達式
SQL>SELECT ename, sal*13+nvl(comm,0) FROM emp;
Ⅱ sql兩個日期之間怎麼用函數表示
DATEDIFF
返回跨兩個指定日期的日期和時間邊界數。
語法
DATEDIFF ( datepart ,startdate ,enddate )
參數
datepart
是規定了應在日期的哪一部分計算差額的參數。下表列出了 Microsoft® SQL Server™ 識別的日期部分和縮寫。
日期部分縮寫
year yy, yyyy
quarter qq, q
Month mm, m
dayofyear dy, y
Day dd, d
Week wk, ww
Hour hh
minute mi, n
second ss, s
millisecond ms
startdate
是計算的開始日期。startdate 是返回 datetime 或 smalldatetime 值或日期格式字元串的表達式。
因為 smalldatetime 只精確到分鍾,所以當用 smalldatetime 值時,秒和毫秒總是 0。
如果您只指定年份的最後兩位數字,則小於或等於"兩位數年份截止期"配置選項的值的最後兩位數字的數字所在世紀與截止年所在世紀相同。大於該選項的值的最後兩位數字的數字所在世紀為截止年所在世紀的前一個世紀。例如,如果 two digit year cutoff 為 2049(默認),則 49 被解釋為 2049,2050 被解釋為 1950。為避免模糊,請使用四位數的年份。
有關時間值指定的更多信息,請參見時間格式。有關日期指定的更多信息,請參見 datetime 和 smalldatetime。
enddate
是計算的終止日期。enddate 是返回 datetime 或 smalldatetime 值或日期格式字元串的表達式。
返回類型
integer
注釋
startdate 是從 enddate 減去。如果 startdate 比 enddate 晚,返回負值。
當結果超出整數值范圍,DATEDIFF 產生錯誤。對於毫秒,最大數是 24 天 20 小時 31 分鍾零 23.647 秒。對於秒,最大數是 68 年。
計算跨分鍾、秒和毫秒這些邊界的方法,使得 DATEDIFF 給出的結果在全部數據類型中是一致的。結果是帶正負號的整數值,其等於跨第一個和第二個日期間的 datepart 邊界數。例如,在 1 月 4 日(星期日)和 1 月 11 日(星期日)之間的星期數是 1。
示例
此示例確定在 pubs 資料庫中標題發布日期和當前日期間的天數。
USE pubs
GO
SELECT DATEDIFF(day, pubdate, getdate()) AS no_of_days
FROM titles
GO
Ⅲ 利用SQL語句如何獲得兩個日期之間相差的天數
用sysdate假設結束日期欄位是end_date
添加這個判斷條件:
where to_char("end_date",'YYYY') = to_char(sysdate,'YYYY') 判斷年相同
and to_char("end_date",'MM') = to_char(sysdate,'MM') 判斷月相同
and to_char("end_date",'dd') - to_char(sysdate,'dd') = 15 判斷日相同
或者:
where to_char("end_date",'YYYY-MM-DD') - to_char(sysdate,'YYYY-MM-DD')=15
(3)sql日期返回兩日期之間擴展閱讀:
注意事項
DATEDIFF返回跨兩個指定日期的日期和時間邊界數。
語法:DATEDIFF ( datepart , startdate , enddate )
參數:datepart
是規定了應在日期的哪一部分計算差額的參數。下表列出了 Microsoft® SQL Server™ 識別的日期部分和縮寫。
startdate是返回datetime或smalldatetime值或日期格式字元串的表達式。 因為smalldatetime只精確到分鍾,所以當用smalldatetime值時,秒和毫秒總是 0。
如果只指定年份的最後兩位數字,則小於或等於"兩位數年份截止期"配置選項的值的最後兩位數字的數字所在世紀與截止年所在世紀相同。大於該選項的值的最後兩位數字的數字所在世紀為截止年所在世紀的前一個世紀。例如,如果 two digit year cutoff 為 2049(默認),則 49 被解釋為 2049,2050 被解釋為 1950。為避免模糊,請使用四位數的年份。
有關時間值指定的更多信息,請參見時間格式。有關日期指定的更多信息,請參見 datetime 和 smalldatetime。
enddate是計算的終止日期。enddate 是返回 datetime 或 smalldatetime 值或日期格式字元串的表達式。
返回類型:integer
注釋:startdate 是從 enddate 減去。如果 startdate 比 enddate 晚,返回負值。當結果超出整數值范圍,DATEDIFF 產生錯誤。對於毫秒,最大數是 24 天 20 小時 31 分鍾零 23.647 秒。對於秒,最大數是 68 年。
Ⅳ 在Sql語句中怎樣計算出兩個日期的差值
sql語句中計算兩個日期的差值用datediff函數。
工具:sqlserver 2008 R2
步驟:
1、計算2009-06-23與2009-06-17之間的天數。語句如下:
selectdatediff(d,'2009-06-17','2009-06-23')
2、查詢結果:
Ⅳ 用SQL怎麼取兩個日期之間的日期
select 日期 from 表名 where 日期 between '2009-06-05' and '2009-06-08'
Ⅵ 如何用SQL返回兩個日期之間的所有連續日期
在層次查詢中,Oracle引入了一個偽列level,用來表示當前行(節點)對應的level,
它從1開始計數,每多一層level的值就加1。
我們可以據此實現對兩個日期/整數之間所有日期/整數的遍歷。
----------------------------------------------------------
SQL> create table test (begin_date date,end_date date);
Table created
SQL> insert into test values(trunc(sysdate),trunc(sysdate+5));
1 row inserted
SQL> select * from test;
BEGIN_DATE END_DATE
----------- -----------
2010-4-6 2010-4-11
SQL> select begin_date,end_date,begin_date+level -1 as today
2 from test
3 connect by begin_date + level -1 <= end_date;
BEGIN_DATE END_DATE TODAY
----------- ----------- -----------
2010-4-6 2010-4-11 2010-4-6
2010-4-6 2010-4-11 2010-4-7
2010-4-6 2010-4-11 2010-4-8
2010-4-6 2010-4-11 2010-4-9
2010-4-6 2010-4-11 2010-4-10
2010-4-6 2010-4-11 2010-4-11
6 rows selected
------------------------------------------------------------------插入兩條記錄,看該查詢語句是否可行
SQL> insert into test values(trunc(sysdate+4),trunc(sysdate+7));
1 row inserted
SQL> select * from test;
BEGIN_DATE END_DATE
----------- -----------
2010-4-6 2010-4-11
2010-4-10 2010-4-13
SQL> select distinct begin_date+level-1 as today
2 from test
3 connect by begin_date+level-1 <= end_date;
TODAY
-----------
2010-4-7
2010-4-13
2010-4-8
2010-4-11
2010-4-9
2010-4-6
2010-4-10
2010-4-12
8 rows selected
--------------------------------------- 根據最大和最小值得查詢
SQL> delete from test where begin_date = to_date('2010-4-10','yyyy-mm-dd');
1 row deleted
SQL> select * from test;
BEGIN_DATE END_DATE
----------- -----------
2010-4-6 2010-4-11
SQL> SELECT one_date
2 FROM (SELECT start_date + level - 1 one_date
3 FROM (SELECT min(begin_date) start_date, max(end_date) end_date
4 FROM test) test
5 connect BY start_date + level - 1 <= end_date ) all_date,
6 test
7 WHERE one_date BETWEEN begin_date AND end_date;
ONE_DATE
-----------
2010-4-6
2010-4-7
2010-4-8
2010-4-9
2010-4-10
2010-4-11
6 rows selected
Ⅶ SQL語句如何判斷一個日期在兩個日期之間
1、創建測試表,
create table test_date_bet(id varchar2(20),v_date date);
Ⅷ sqlserver中返回兩個日期間相差幾年零幾月
select datediff(month,'2017-1-5','2018-05-25')/12 ,datediff(month,'2017-1-5','2018-05-25')%12
執行結果:1年4個月
注釋:
datediff(month,'2017-1-5','2018-05-25')取出兩個日期相差的總月數;
datediff(month,'2017-1-5','2018-05-25')/12 取出兩個日期相差的總年數。
datediff(month,'2017-1-5','2018-05-25')%12 取出總年數後,剩餘月數。
Ⅸ 第四十三章 SQL函數 DATEDIFF
日期/時間函數,返回兩個日期之間指定日期部分的整數差。
DATEDIFF 函數返回兩個指定日期之間指定日期部分差的整數。日期范圍從開始日期開始,到結束日期結束。(如果 enddate 早於 startdate , DATEDIFF 將返回一個負整數值。)
DATEDIFF 返回 startdate 和 enddate 之間指定單位的總數。例如,兩個日期時間值之間的分鍾數計算日期部分和時間部分,並為每一天的差異增加 1440 分鍾。 DATEDIFF 返回開始日期和結束日期之間跨越的指定日期部分邊界的計數。例如,指定連續年份的任意兩個日期(例如 2018-09-23 和 2019-01-01 )返回的年份 DATEDIFF 為1,而不管這兩個日期之間的實際持續時間是大於還是小於 365 天。同樣, 12:23:59 和 12:24:05 之間的分鍾數是1,盡管實際上只有 6 秒將兩個值分開。
請注意, DATEDIFF 是為Sybase和Microsoft SQL Server兼容性而提供的。使用 TIMESTAMPDIFF ODBC 標量函數可以執行類似的時間/日期比較操作。
也可以使用 DATEDIFF() 方法調用從 ObjectScript 調用此函數:
為 DATEDIFF() 方法指定無效的 datepart 、 startdate 或 enddate 會生成 < ZDDIF > 錯誤。
日期部分參數可以是下列日期/時間組件之一,可以是全名(日期部分列)或其縮寫(縮寫列)。這些 datepart 組件名稱和縮寫不區分大小寫。
weekday 和 dayofyear datepart 值在功能上與 day datepart 值相同。
DATEDIFF 和 TIMESTAMPDIFF 不處理季度(間隔 3 個月)。
如果指定包含分數秒的開始日期和結束日期, DATEDIFF 將以分數秒的整數形式返回差值,如下例所示:
datepart 可以指定為帶引號的字元串或不帶引號的字元串。這些語法變體執行略有不同的操作:
startdate 和 enddate 參數可以採用不同的數據類型格式。
startdate 和 enddate 參數可以採用以下任何格式:
%String (或 compatible )值可以是以下任何一種格式,可以包含或省略小數秒:
Sybase/SQL-Server-date是以下五種格式之一:
在第一種語法格式中,分隔符可以是斜杠( / )、連字元( - )或句點( . )。
Sybase/SQL-Server-time表示以下三種格式之一:
如果年份以兩位數字表示,或者日期被完全省略, IRIS會檢查滑動窗口來解釋日期。
系統范圍內滑動窗口的默認值是 1900 ;
因此,在默認情況下,兩位數的年份被認為是在20世紀。
如下示例所示:
DATEDIFF 返回以毫秒(3位整數)、微秒(6位整數)或納秒(9位整數)表示的小數秒,而不管 startdate 和 enddate 中的小數位數精度是多少。
如下示例所示:
一些NLS區域設置將分數分隔符指定為逗號(歐洲的用法),而不是句號。
如果當前區域設置是這些區域設置之一, DATEDIFF 接受句號或逗號作為本地日期格式的秒分隔符。
對於 $HOROLOG 格式的日期或 ODBC 格式的日期,不能使用逗號作為小數秒分隔符。
嘗試這樣做會生成一個 SQLCODE -8 。
無論當前的NLS語言環境是什麼,這兩種格式都需要一段時間。
DATEDIFF 返回以秒和毫秒為單位的時間差,即使當前進程的 TimeFormat 被設置為不返回秒。
如下示例所示:
DATEDIFF 對輸入值執行以下檢查:
下面的例子返回 353 ,因為兩個時間戳之間有 353 天(D):
在下面的示例中,每個 DATEDIFF 返回 1 ,因為日期的年份部分相差1。
日期之間的實際持續時間不被考慮:
注意,上面的例子使用了日期部分的縮寫。
但是,你可以指定全名,如下例所示:
下面的嵌入式SQL示例使用主機變數執行與前面示例相同的 DATEDIFF 操作:
下面的例子使用 WHERE 子句中的 DATEDIFF 來選擇上周入院的患者:
下面的例子使用了一個子查詢來返回那些個人的出生日期距當前日期不超過 1500 天的記錄: