2017-02-27 63 views
0

我有一個日期/時間戳字段,我需要按日期拉記錄。我有一個日期/時間戳字段,我需要按日期拉記錄

示例:所有數據都是記錄> = '01/01/2016'。

在字段中的數據是按以下格式「2012年9月5日上午07點34分59秒」

我試圖存儲的下列但無論哪種,我得到一個錯誤或壞的結果:

  • where to_char(start_time) > '01/01/2016'(仍然爲2012條記錄)
  • where trunc(start_time) > '01/01/2016'(錯誤:沒有有效的月份)
+1

請參閱:http://stackoverflow.com/questions/267721/mysql-strip-time-component-from-datetime – NoChance

+1

to_char和trunc來自Oracle ...您確定您使用的是MySQL嗎? –

+0

您的日期/時間戳字段是DATE或TIMESTAMP數據類型還是VARCHAR2或NUMBER?最好的方法是運行'DESCRIBE'命令:'DESCRIBE '。這將爲您提供表格中所有列的名稱和數據類型。 – mathguy

回答

0

使用to_date的字符串轉換爲日期然後做比較。

試試這個:

where start_time >= to_date('01/01/2016', 'dd/mm/yyyy'); 
+1

謝謝!這工作。我能夠獲得我需要的數據。 –

1

在MySQL中,你應該

select * from my_table 
where start_time > '2016/01/01' 

或STR_TO_DATE轉換使用正確的格式

使用

這是字符串規範格式

select * from my_table 
where start_time > str_to_date('01/01/2016', '%d/%m/%Y') 
0

在Oracle(也可能是其他數據庫產品)中,可以使用ANSI日期文字,如下所示。您也可以使用to_date(),但ANSI日期文字的好處是它不需要函數調用。 (函數調用開銷,這會消耗時間和資源,但呼籲to_date()只有一次是不是一個問題。)

... where start_time >= date '2016-01-01' 

注意的是,在ANSI標準日期文字,日期必須是在正確的格式YYYY- MM-DD(帶有破折號而不是斜線或任何其他分隔符),因爲ANSI日期文字而不是採用格式模型。