2014-03-19 52 views
2

假設我在Oracle中有一個名爲Employee的表,其結構如下。選擇出生日期爲月底的所有員工

EMPLOYEE: 
    NAME VARCHAR2(60) 
    DOB TIMESTAMP 
    SAL NUMBER 

我想要一個查詢,選擇DOB在月的最後一天落入的所有員工。

即(1/31,2/28或基於今年3/31 2/29 ....)

+0

爲「mysql」標記此問題的具體原因是什麼?好像你正在使用Orcale。 –

+0

任何分貝將工作的一般想法。 –

+0

關於字符串和日期/時間函數,不同DBMS供應商之間沒有一般想法 – peterm

回答

2

我會處理這將增加一天以它的方式再看看如果一個月的日子是第一天。

我不知道甲骨文明確,但既然你說在MSSQL總體思路我會做datepart(d, dateadd(day, 1, DOB)) = 1

6

在oracle中Last_day()功能:

SELECT * FROM table WHERE DOB=Last_day(DOB) 
+0

這假設DOB始終有其時間組件= 12am –

+1

我沒有說你的答案是錯誤的。我只是指出它做出了一個假設。如果數據總是有時間組件= 12am,您的答案將工作得很好。 –

0

對於SQL,

SELECT * FROM table 
Where Datediff(dd,DOB,DATEADD(s,-1,DATEADD(mm, DATEDIFF(m,0,DOB)+1,0)))=0 
相關問題