mysql - 有什么方法可以将我的所有表格日期转换为 varchar 而不是使用 ALTER?
问题描述
我有这样的问题......我被告知要搜索一些无效的数据库,因为印度尼西亚语中的员工索引号或(NIP)与工人的出生日期不同例如:我的出生日期是 1996-12-23 所以员工索引号应为 19961223015 最后 3 位是工人序列号
我已经使用了名为“LIKE”的语法,所以当我使用它时,它几乎就像“NIP not like 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 的第一个数字与生日不同
解决方案
使用日期掩码将日期转换为字符串,以确保完全按照您的预期进行转换。
假设这TGLLHR
是一DATE
列,请按以下方式进行比较:
NIP not like TO_CHAR(TGLLHR, 'YYYYMMDD') || '%'
如果您只是将该DATE
字段转换为VARCHAR2
,那么您就是让 Oracle 使用您的NLS_DATE
设置来执行隐式日期转换,这可能是您不想要的。使用显式日期掩码。
推荐阅读
- python - 熊猫:在 2 行的连接字符串后删除行
- java - 在 tomcat 8 - CentOS 8 中部署系统 Spring boot
- odoo - 未找到公共网址(404 - 未找到)-Odoo10
- isabelle - 专注于 Eisbach 的新子目标
- batch-file - 将 findstr 设置为要引用的变量
- c# - 在 Xamarin.iOS 中检查蓝牙状态(开/关)
- css - Angular 无法在导航到嵌套路由时获取 CSS 文件
- node.js - 无法在 Azure 管道 (Nodejs) 上使用 pdf-parse 解析 PDF 流
- php - 如何在不使用插件的情况下将背景字段添加到我的自定义 WordPress 帖子类型?我已经让我的自定义 WordPress 帖子类型工作了
- terraform - Terraform 数据“azurerm_key_vault_secret”“版本”属性给出错误:“版本”:无法设置此字段