有什么办法可以将所有表格日期都转换为varchar而不是使用ALTER?

时间:2019-06-24 12:57:54

标签: mysql sql

我有这样的问题...我被告知要搜索一些无效的数据库,因为印度尼西亚的雇员索引号或(NIP)与工人的出生日期不同,例如:我的出生日期是1996-12 -23,所以员工索引号应该是19961223015,最后3位数字是工人序列号

我已经使用了称为“ LIKE”的语法,所以当我使用它时,它几乎就像“ NIP,而不是TGLLHR”(生日)一样,当然,所有输出都是因为VARCHAR无法与DATE进行比较

select m.NIP, m.NAMA, DATE_FORMAT(m.TGLLHR, '%Y%m%d') as TGLLHR, DATE_FORMAT(m.TMTCAPEG, '%Y%m%d') as TMTCAPEG, m.KDJENKEL, m.KDSTAPEG, s.NMSTAPEG, t.KDSATKER, t.NMSATKER
from mstpegawai m join
     stapeg_tbl s
     on m.KDSTAPEG=s.KDSTAPEG join
     satker_tbl t
     on m.KDSATKER=t.KDSATKER
where m.KDSTAPEG < 10 AND
      (NIP not like TGLLHR OR  NIP not like TMTCAPEG OR  NIP not like KDJENKEL)
ORDER BY m.NAMA

我希望输出是这样的 NIP为19931215013,但是生日为1993-11-15,因此该数据无效,因为NIP的第一个数字与生日不相同

1 个答案:

答案 0 :(得分:0)

使用日期掩码将日期转换为字符串,以确保完全按照您的期望进行转换。

假设numpy.ndarrayTGLLHR列,则进行如下比较:

DATE

如果仅将NIP not like TO_CHAR(TGLLHR, 'YYYYMMDD') || '%' 字段强制转换为DATE,那么就让Oracle使用VARCHAR2设置执行隐式日期转换,这可能是您不希望的。使用明确的日期掩码。