2011-09-24 70 views
28

我無法在我的表格中插入一行。這裏是插入語句和表的創建。這是uni任務的一部分,因此簡單,我做錯了什麼?我使用的是Oracle SQL開發者版本3.0.04。'如何在oracle中插入日期和時間?

我遇到的問題是它只插入dd/mon/yy而不是時間。我如何獲得它以插入時間?

INSERT INTO WORKON (STAFFNO,CAMPAIGNTITLE,DATETIME,HOURS) 
VALUES ('102','Machanic Summer Savings',TO_DATE('22/April/2011 8:30:00AM','DD/MON/YY HH:MI:SSAM'),'3') 
; 

CREATE TABLE WorkOn 
(
    StaffNo  NCHAR(4), 
    CampaignTitle VARCHAR(50), 
    DateTime  DATE, 
    Hours   VARCHAR(2) 
) 
; 

感謝您的幫助。

編輯:這沒有任何意義,我只在該字段中輸入時間來測試時間是否正常工作,並輸出日期WTF?這是很奇怪的我可以不使用日期字段,只是進入的時候,我意識到這將導致操縱數據的問題,但這個正在沒有任何意義......

+0

也分享你的表格定義 - 'DESC WORKON' –

回答

29

您正在通過使用to_date函數並指定時間來做所有事情。數據庫中存在時間。麻煩的是,當你從數據庫中選擇一列DATE數據類型時,默認格式掩碼不顯示時間。如果您發出

alter session set nls_date_format = 'dd/MON/yyyy hh24:mi:ss'

或類似,包括時間分量的東西,你會看到時間成功把它做成了數據庫。

Regards,
Rob。

+0

omg謝謝,只是最後一個問題,它設置所有日期格式的列的格式,導致時間顯示列,我只希望顯示日期。是否可以爲特定的表格指定它? – Deep

+1

那麼你必須在你的select語句中指定日期格式掩碼。類似於「select to_char(datetime,'dd-mm-yyyy hh24:mi:ss')來自workon的datetime」。 –

+0

這個「更改會話」命令是天賜之物(我是一個完整的Oracle新手)。感謝Rob。 –

4

試試這個:

.. (to_date('2011/04/22 08:30:00', 'yyyy/mm/dd hh24:mi:ss'));

+0

沒有抱歉沒有同樣的事情,它只顯示日期。 – Deep

+0

對不起,我有一個錯字 - 請再試一次。 – jschorr

+0

嗨它仍然不起作用,它只插入日期部分,並忽略時間。如果我只進入一段時間,那麼它只是將它轉換爲日期... MySQL對我來說比oracle更有意義... – Deep

29

您可以使用

insert into table_name 
(date_field) 
values 
(TO_DATE('2003/05/03 21:02:44', 'yyyy/mm/dd hh24:mi:ss')); 

希望它能幫助。