如何将SQL查询中belgetarihi的格式转换为与vadetarihi一致?
解决方案
要让belgetarihi字段的显示格式与vadetarihi完全一致,核心是对belgetarihi使用和vadetarihi相同的日期格式化逻辑。由于原查询用了ICE_ODEMEBASLIK.*(查询全表字段),需要替换为明确列出字段并单独处理belgetarihi。
修改步骤
- 替换通配符查询:去掉
ICE_ODEMEBASLIK.*,明确列出该表中除belgetarihi外的所有字段(需根据实际表结构补充完整)。 - 格式化
belgetarihi:使用与vadetarihi一致的日期转换函数(以SQL Server常用的CONVERT为例),将belgetarihi转换为目标格式并保留原字段名。
从原查询的日期条件可推测,vadetarihi的显示格式为dd.mm.yyyy(对应格式码103),修改后的完整SQL语句如下:
SELECT -- 列出ICE_ODEMEBASLIK表中除belgetarihi外的所有字段,需替换为实际表字段 ICE_ODEMEBASLIK.ID, ICE_ODEMEBASLIK.IOdurum, ICE_ODEMEBASLIK.odemetipi, ICE_ODEMEBASLIK.pin, ICE_ODEMEBASLIK.plankod, ICE_ODEMEBASLIK.karsiplankod, ICE_ODEMEBASLIK.kayitdamga, ICE_ODEMEBASLIK.UQ_caribanka, ICE_ODEMEBASLIK.IDfisbaslik, ICE_ODEMEBASLIK.vadetarihi, -- 将belgetarihi转换为与vadetarihi一致的dd.mm.yyyy格式 CONVERT(VARCHAR, ICE_ODEMEBASLIK.belgetarihi, 103) AS belgetarihi, ORT_DOSYALAR_kayitdamga AS DSY_kayitdamga, HP.ID HP_ID, HP.planadi HP_planadi, KP.ID KP_ID, KP.planadi KP_planadi, ICE_CARIBANKA.ID CBANKA_ID, ICE_CARIBANKA.kod CBANKA_kod, ICE_CARIBANKA.hesapnr CBANKA_hesapnr, ICE_CARIBANKA.subenr CBANKA_subenr, ICE_CARIBANKA.subeadi CBANKA_subeadi FROM ICE_ODEMEBASLIK WITH (NOLOCK) LEFT JOIN ORT_PLAN AS HP WITH (NOLOCK) ON ICE_ODEMEBASLIK.plankod = HP.plankod LEFT JOIN ORT_PLAN AS KP WITH (NOLOCK) ON ICE_ODEMEBASLIK.karsiplankod = KP.plankod LEFT JOIN (SELECT DISTINCT ORT_DOSYALAR.kayitdamga AS ORT_DOSYALAR_kayitdamga FROM ORT_DOSYALAR WITH (NOLOCK) WHERE ORT_DOSYALAR.tablo = 6) AS DOSYA ON ICE_ODEMEBASLIK.kayitdamga = ORT_DOSYALAR_kayitdamga LEFT JOIN ICE_CARIBANKA WITH (NOLOCK) ON ICE_CARIBANKA.kayitdamga = ICE_ODEMEBASLIK.UQ_caribanka WHERE 1 = 1 AND ICE_ODEMEBASLIK.IOdurum = -1 AND ICE_ODEMEBASLIK.odemetipi = 1 AND ICE_ODEMEBASLIK.pin = 0 AND ICE_ODEMEBASLIK.belgetarihi >= CONVERT(DATETIME, '01.01.2022', 103) AND ICE_ODEMEBASLIK.belgetarihi < CONVERT(DATETIME, '01.01.2023', 103) ORDER BY CONVERT(DATE, ICE_ODEMEBASLIK.belgetarihi, 103), ICE_ODEMEBASLIK.IDfisbaslik, ICE_ODEMEBASLIK.vadetarihi
关键说明
- 若
vadetarihi使用的是其他格式(如yyyy-mm-dd对应格式码23、mm/dd/yyyy对应101),只需将CONVERT函数中的103替换为对应的格式码即可。 - 必须明确列出
ICE_ODEMEBASLIK的所有字段(除belgetarihi),不能再用*,否则会同时返回原始格式和转换后的belgetarihi字段,导致字段重复。
内容的提问来源于stack exchange,提问作者Rasim Tünceli
相关产品推荐
相关产品推荐

