我有一個日期/時間戳字段,我需要按日期拉記錄。我有一個日期/時間戳字段,我需要按日期拉記錄
示例:所有數據都是記錄> = '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'
(錯誤:沒有有效的月份)
我有一個日期/時間戳字段,我需要按日期拉記錄。我有一個日期/時間戳字段,我需要按日期拉記錄
示例:所有數據都是記錄> = '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'
(錯誤:沒有有效的月份)使用to_date
的字符串轉換爲日期然後做比較。
試試這個:
where start_time >= to_date('01/01/2016', 'dd/mm/yyyy');
謝謝!這工作。我能夠獲得我需要的數據。 –
在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')
在Oracle(也可能是其他數據庫產品)中,可以使用ANSI日期文字,如下所示。您也可以使用to_date()
,但ANSI日期文字的好處是它不需要函數調用。 (函數調用開銷,這會消耗時間和資源,但呼籲to_date()
只有一次是不是一個問題。)
... where start_time >= date '2016-01-01'
注意的是,在ANSI標準日期文字,日期必須是在正確的格式YYYY- MM-DD(帶有破折號而不是斜線或任何其他分隔符),因爲ANSI日期文字而不是採用格式模型。
請參閱:http://stackoverflow.com/questions/267721/mysql-strip-time-component-from-datetime – NoChance
to_char和trunc來自Oracle ...您確定您使用的是MySQL嗎? –
您的日期/時間戳字段是DATE或TIMESTAMP數據類型還是VARCHAR2或NUMBER?最好的方法是運行'DESCRIBE'命令:'DESCRIBE'。這將爲您提供表格中所有列的名稱和數據類型。 –
mathguy