程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> .NET網頁編程 >> C# >> 關於C# >> 查詢某段時間內過生日的員工名單的SQL語句

查詢某段時間內過生日的員工名單的SQL語句

編輯:關於C#
 

首先講講要用到的兩個數據庫函數,dateadd和datediff函數。
dateadd函數:DateAdd(interval, number, date)返回的是一個日期數據,函數的三個形參都是必要。
interval表示時間的間隔可以是yy(表示年),mm(表示月),dd(表示日),qq(表示季度),ww(表示周);
number表示間隔的數值,正數表示日期數據date的未來,負數表示日期數據大特的從前。
date為日期數據,一般就是數據表裡面的某個日期字段如birthday生日字段。
示例 Select dateadd(dd,3,'2008-10-05') 得到的結果就是2008-10-08.

datediff函數:DateDiff(interval, date1, date2[, firstdayofweek[, firstweekofyear]]) 返回的是一個數值,這個數值表示date1和date2之間相隔時間間隔interval的數值。

interval表示時間間隔,可以是yy(表示年),mm(表示月),dd(表示日),qq(表示季度),ww(表示周),hh(表示小時),n(表示分鐘),s(表示秒)

date1, date2是計算中進行計算的兩個日期

Firstdayofweek 可選。指定一個星期的第一天的常數。如果未予指定,則以星期日為第一天。

firstweekofyear 可選。指定一年的第一周的常數。如果未予指定,則以包含 1 月 1 日的星期為第一周。

示例:Select datediff(dd,'2008-10-05','2008-10-08') 結果為3

 

了解以上兩個函數的用法,我們就可以利用它們來求得某段時間內過生日的員工名單,如存放員工信息的表為StaffBasic,表中員工生日字段名為Birthday,BeginTime變量存儲從前台得到的查詢生日的開始時間,EndTime變量存儲從前台得到的查詢生日的結束時間,則查詢語句SQL的寫法如下:

Select * From StaffBasic where

(dateadd(year,datediff(year,birthday,'"+BeginTime+"'),birthday) between '"+BeginTime+"' and '"+EndTime+"'

or

dateadd(year,datediff(year,birthday,'"+BeginTime+"'),birthday) between '"+BeginTime+"' and '"+EndTime+"')


分析一下這個語句的含義:

(dateadd(year,datediff(year,birthday,'"+BeginTime+"'),birthday)和

dateadd(year,datediff(year,birthday,'"+EndTime+"'),birthday)

的作用是把所有的員工的出生的年份改成是查詢中輸入日期的年份,因為前台查詢輸入的是兩個日期,這兩個日期可能年份不同,如前台查詢的是2007-12-20到2008-1-20這個時間段的過生日員工名單,所以需要考慮兩種年份情況,然後通過between '"+BeginTime+"' and '"+EndTime+"' 進行符合條件的記錄的篩選。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved