gpt4 book ai didi

Oracle 数据库查询格式

转载 作者:行者123 更新时间:2023-12-01 12:02:01 25 4
gpt4 key购买 nike

我在查询 Oracle 数据库时遇到格式化数据的问题。

我想做的是将一些数据导出为以下格式的文本文件;

    1IN20071001      40005601054910101200            1   65
  • 第一个数字(上面的 1)= 公司编号(位置 1-5,前面的空格)
  • IN 或 UT = IN 打卡,UT 打卡(位置 6-7)
  • 20071001 = 日期(营业日期),格式为 YYYYMMDD(位置 8-15)
  • 400056010549 = EmployeeID(位置 16-33,右对齐,前面空白)
  • 101012 = TTMMSS 格式的时间(位置 34-39)
  • 00 = FT,始终为 00(位置 40-41)
  • 空格 = 总是 8 个空格(位置 42-49)
  • 1 = 不确定它的用途,但它应该始终为 1(位置 50,右对齐,前面空白)
  • 65 = “Kostnadsställe”,ENT_HR_EMPLOYEE.USERALPHA6(位置 51-55,右对齐,前面空白)

目前我正在使用下面的查询,但这是我的 SQL 知识的终点......

COLUMN one FORMAT a5 HEADER  JUSTIFY RIGHT 
COLUMN two FORMAT a8 HEADER two
COLUMN three FORMAT a18 HEADER three JUSTIFY RIGHT
COLUMN four FORMAT a5 HEADER three JUSTIFY RIGHT

SELECT h.fkod AS one, 'IN',
SUBSTR(t.clockindatetime,0,4) ||
SUBSTR(t.clockindatetime,6,2) ||
SUBSTR(t.clockindatetime,9,2) AS two,
i.employeeid AS three
SUBSTR(t.clockindatetime,11,6) || '00 1',
h.fkod AS four
FROM ent_time_card_detail t,
max_employeeid_history i,
ent_hr_employee h
WHERE h.enthremployeeid = t.enthremployeeid
AND h.payrollid = i.userid
AND t.clockindatetime >= i.from_date
AND (t.clockindatetime < i.to_date OR i.to_date IS NULL);

有没有 SQL 专家可以帮助我完成格式化?

最佳答案

如果 t.clockindatetime 是一个 oracle DATE 那么为什么不使用:
TO_CHAR(t.clockindatetime, 'YYYYMMDD') 日期部分和TO_CHAR(t.clockindatetime, 'HHMISS') 时间部分(如果您希望小时为 24 小时格式,请使用 TO_CHAR(t.clockindatetime, 'HH24MISS') (时间仍然只占 2 个字符))

关于Oracle 数据库查询格式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/326425/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com