Đây chính xác là những gì TO_DATE()
dành cho: để chuyển đổi dấu thời gian cho đến ngày.
Chỉ cần sử dụng TO_DATE(sysdate)
thay vì TO_CHAR(sysdate, 'YYYY/MM/DD-HH24-MI-SS-SSSSS')
.
SQLFiddle demo
CẬP NHẬT:
mỗi cập nhật của bạn, cột cdate
của bạn không phải là thực DATE
hoặc TIMESTAMP
loại, nhưng VARCHAR2
. Bạn không nên sử dụng các loại chuỗi để giữ ngày tháng. Rất bất tiện và làm chậm để tìm kiếm, so sánh và thực hiện tất cả các loại toán học khác vào các ngày.
Bạn nên chuyển đổi trường cdate
VARCHAR2
thành số TIMESTAMP
thực. Giả sử không có người dùng khác cho lĩnh vực này ngoại trừ mã của bạn, bạn có thể chuyển đổi cdate
để đánh dấu thời gian như sau:
BEGIN TRANSACTION;
-- add new temp field tdate:
ALTER TABLE mytable ADD tdate TIMESTAMP;
-- save cdate to tdate while converting it:
UPDATE mytable SET tdate = to_date(cdate, 'YYYY-MM-DD HH24:MI:SS');
-- you may want to check contents of tdate before next step!!!
-- drop old field
ALTER TABLE mytable DROP COLUMN cdate;
-- rename tdate to cdate:
ALTER TABLE mytable RENAME COLUMN tdate TO cdate;
COMMIT;
SQLFiddle Demo
CHỌN to_date (create_date, 'DD-MM-YYYY') sẽ phù hợp với bạn. Hãy thử nó – ankurtr
'LRI tại dòng 1: ORA-01861: chữ không khớp với chuỗi định dạng ' trỏ tới cdate. – kumarprd
xin lỗi. Vì bạn đã có ngày bạn cần phải chuyển đổi nó thành char. Vì vậy, hãy thử to_char (create_date, 'DD-MM-YYYY'). Nó sẽ làm việc cho bạn. – ankurtr