Helpex - Trao đổi & giúp đỡ Đăng nhập
6

truy vấn cho trích xuất tháng và năm kể từ ngày đầy đủ là gì. dữ liệu của tôi như thế này: 29/01/2008 Tôi đã thử truy vấn này:

select ID_NO, CHECKED_DATE, to_date(TO_CHAR(CHECKED_DATE, 'MON-YYYY'), 'MON-YYYY') AS A 
from Doctor_Checkup;

nhưng Nó sẽ cho đầu ra: 1/1/2008

Sản lượng dự kiến: 1-2008

6 hữu ích 1 bình luận 152k xem chia sẻ
11

Nếu trường đã là một cột ngày, bạn có thể chỉ cần truyền nó sang định dạng bạn muốn:

select ID_NO,CHECKED_DATE,ltrim(TO_CHAR(CHECKED_DATE,'mm-yyyy'),'0') AS A from Doctor_Checkup;

Nếu đó là một cột văn bản, trước tiên bạn sẽ cần truyền đến một ngày có định dạng:

select ID_NO,CHECKED_DATE,ltrim(TO_CHAR(TO_DATE(CHECKED_DATE,'dd/mm/yyyy'),'mm-yyyy'),'0') AS A from Doctor_Checkup;
11 hữu ích 0 bình luận chia sẻ
8

Ngày không có định dạng - nó được lưu trữ bên trong cơ sở dữ liệu dưới dạng 7 byte (đại diện cho năm, tháng, ngày, giờ, phút và giây) và nó không phải là cho đến bất kỳ giao diện người dùng nào bạn đang sử dụng (tức là SQL / Plus, SQL Developer, Java, v.v.) cố gắng hiển thị nó cho bạn, người dùng và chuyển nó thành thứ mà bạn thấy có ý nghĩa (thường là một chuỗi) mà ngày có định dạng.

Một điều cần lưu ý là ngày luôn có các thành phần năm, tháng, ngày, giờ, phút và giây. Đang làm:

to_date(TO_CHAR(CHECKED_DATE, 'MON-YYYY'), 'MON-YYYY')

Hiệu quả giống như làm:

TRUNC( Checked_Date, 'MM' )

và sẽ vẫn có thành phần ngày, giờ, phút và thứ hai nhưng sẽ bị cắt bớt đến nửa đêm của ngày đầu tiên của tháng. Giao diện người dùng có thể chỉ có các tùy chọn được đặt để không hiển thị thành phần thời gian (nhưng ngày vẫn sẽ có).

Những gì bạn muốn làm là chuyển đổi ngày tháng thành một chuỗi được định dạng:

select ID_NO,
       CHECKED_DATE,
       TRIM( LEADING '0' FROM TO_CHAR( CHECKED_DATE, 'MM-YYYY') ) AS A 
from   Doctor_Checkup;

hoặc là

select ID_NO,
       CHECKED_DATE,
       EXTRACT( MONTH FROM CHECKED_DATE )
         || '-' || EXTRACT( YEAR FROM CHECKED_DATE ) AS A 
from   Doctor_Checkup;
8 hữu ích 1 bình luận chia sẻ
2

Để nhận 1-2008định dạng, hãy sử dụng định dạng sau với các số 0 ở đầu được cắt bớt:

select ID_NO,CHECKED_DATE,ltrim(TO_CHAR(CHECKED_DATE,'MM-YYYY'),'0') AS A from Doctor_Checkup; 
2 hữu ích 0 bình luận chia sẻ
2

Bạn muốn một chuỗi đại diện cho tháng và năm ở định dạng [M] M-YYYY. Tuy nhiên, Oracle TO_CHARchỉ hỗ trợ MM-YYYY, vì vậy bạn phải loại bỏ số 0 ở đầu nếu có.

Hai giải pháp:

trim(leading '0' from to_char(checked_date, 'mm-yyyy'))

hoặc là

extract(month from checked_date) || '-' || extract(year from checked_date) from dual
2 hữu ích 0 bình luận chia sẻ
-1

CHỌN ID_NO, CHECKED_DATE TỪ DOCTOR_CHECKUP CHIẾT XUẤT (THÁNG TỪ CHECKED_DATE) TRONG (6) VÀ TRÍCH (NĂM TỪ CHECKED_DATE) TRONG (2019);

6 Ý NGHĨA THÁNG VÀ NĂM 2019 LÀ NĂM

-1 hữu ích 0 bình luận chia sẻ
loading
Không tìm thấy câu trả lời bạn tìm kiếm? Duyệt qua các câu hỏi được gắn thẻ sql oracle , hoặc hỏi câu hỏi của bạn.

Có thể bạn quan tâm

loading