2017-08-17 247 views
-3

表的Created_time列的值爲25-MAY-2012.10.12.320000 PMSQL時間戳查詢

我需要編寫一個查詢,顯示從table XYZ因爲它是建築MarchApril月之間產生的所有字段,不可知的一年中他們都英寸

我想顯示記錄根據他們的id升序排列。

有人可以幫助我嗎?

+0

什麼是列CREATED_TIME的數據類型? – JRG

+0

你有什麼試過,這不是一個作業網站 – dbajtr

+0

哪個RDBMS是爲了這個?請添加一個標籤來指定您是使用'mysql','postgresql','sql-server','oracle'還是'db2' - 或者其他的東西。 –

回答

0

查看月份和年份功能。 如果CREATED_TIME是datetime類型:

select * 
from TABLE 
where month(Created_time) in (3, 4) 
+1

對使用​​未知dbms的問題的產品具體答案... – jarlh

0

如果您需要檢查Created_time是否在任何一年的三月,那麼這個想法是做這樣的事情:

select * 
from XYZ 
where Created_time like '%-MARCH-%' 
order by id; 

或者,如果這不適用於您的column類型,然後將其轉換爲varchar。此外,還有一些RDBMS特定的function可以幫助你,但是爲了更全面的回答,我需要知道你正在使用的RDBMS和的Created_time

編輯

正如Jarhl指出,EXTRACT應該使用在這種情況下,檢查了一個月。 Source,證明他是正確的說:

名稱

EXTRACT

從日期提取零件的ANSI SQL標量函數是 提取物。 ANSI SQL標準語法

ANSI SQL EXTRACT函數採用date_part和 計算爲日期時間值的表達式。 MySQL和Oracle和PostgreSQL的支持 ANSI SQL標準語法:

EXTRACT(date_part FROM expression)

+1

根據評論,Created_time數據類型是TIMESTAMP(6)。 – jarlh

+0

@jarlh謝謝你指出。我可能是錯的,但我認爲Oracle可以提供這樣的精確度。在這種情況下,可以使用to_char完成到文本數據的轉換。但是,如果我們在Oracle中,那麼可以使用EXTRACT獲取月份。來源:https://docs.oracle.com/cd/B28359_01/server.111/b28286/functions052.htm#SQLRF00639 –

+1

EXTRACT甚至是在這種情況下使用的ANSI SQL函數!(但問題中指定的時間戳不符合ANSI SQL標準,所以誰知道哪些dbms OP正在使用...) – jarlh