to_char(to_date (LPAD(pharmacy_employee_master.entry_time,6,0), 'hh24miss'), 'hh:mi:ss')
我有以下Select语句:
SELECT
pharmacy_employee_details.id,
pharmacy_employee_master.employee_number,
to_char(to_date(pharmacy_employee_master.entry_date,'j'),'dd/MM/yyyy') as ENTRY_DATE,
to_char(to_date (pharmacy_employee_master.entry_time, 'hh24miss'), 'hh:mi:ss') as ENTRY_TIME,
pharmacy_employee_master.beneficiaries,
pharmacy_employee_master.note,
PHARMACY_EMPLOYEE_DETAILS.ITEM_CODE,
PHARMACY_EMPLOYEE_DETAILS.ITEM_NAME,
PHARMACY_EMPLOYEE_DETAILS.QTY,
PHARMACY_EMPLOYEE_DETAILS.PRICE
FROM PHARMACY_EMPLOYEE_MASTER
INNER JOIN pharmacy_employee_details ON
pharmacy_employee_details.pid=pharmacy_employee_master.id
where 1=1
当输入时间少于10时出现问题。如何在oracle中使用左填充(LPAD)解决该问题?
ALTER TABLE pharmacy_employee_master ADD ( entry_datetime DATE );
UPDATE pharmacy_employee_master
SET entry_datetime = TO_DATE( entry_date, 'J' )
+ ( TO_DATE( LPAD( entry_time, 6, '0' ), 'hh24miss' )
- TO_DATE( '00:00:00', 'hh24:mi:ss' ) );
(然后您将entry_date
和entry_time
列删除,您不必担心会丢失前导零,可以只按需要设置日期和时间的格式。)]] >>db<>fiddle如果无法这样做,请使用:
TO_CHAR( TO_DATE( LPAD( entry_time, 6, '0' ), 'hh24miss' ), 'hh24:mi:ss' )
(注意:您还想要hh24
而不是只需要12小时制的hh
;或者,如果您确实想要12小时制,那么您可能还需要子午线指示器'hh12:mi:ss am'
)
如果entry_time的长度不是6,您可以简单地使用LPAD
填充0:to_char(to_date (LPAD(pharmacy_employee_master.entry_time,6,0), 'hh24miss'), 'hh:mi:ss')
干杯!