求助:改写Access SQL语句实现组合框去重无时间日期(dd-mm-yyyy)
Access组合框日期去重并格式化解决方案
嘿,我来帮你搞定这个Access组合框的日期问题!你的原查询只做了字段去重,但因为CREATED字段带时间戳,哪怕是同一天的记录,只要时间不同就会被当成不同项保留,而且也没处理成你要的dd-mm-yyyy格式。另外要注意,Access用的是Jet SQL,和SQL Server的CONVERT函数不兼容,得用它自带的日期处理函数才行。
这里给你两个可行的修改方案:
方案一:先提取纯日期再格式化
用DateValue函数剥离时间部分,再用Format指定格式,最后通过DISTINCT去重:
SELECT DISTINCT Format(DateValue(table33.CREATED), "dd-mm-yyyy") AS FormattedDate FROM table33 WHERE table33.CREATED IS NOT NULL -- 可选:排除空日期项 ORDER BY Format(DateValue(table33.CREATED), "dd-mm-yyyy");
DateValue(table33.CREATED):把带时间的日期值转换成纯日期(自动去掉时分秒)Format(..., "dd-mm-yyyy"):将纯日期转换成你需要的日-月-年格式DISTINCT:确保每个格式化后的日期只出现一次ORDER BY:让组合框里的日期按顺序排列,提升用户体验
方案二:直接格式化(更简洁)
Format函数在处理日期时间值时,如果格式字符串只包含日期部分,会自动忽略时间部分,所以可以直接写:
SELECT DISTINCT Format(table33.CREATED, "dd-mm-yyyy") AS FormattedDate FROM table33 WHERE table33.CREATED IS NOT NULL -- 可选:排除空日期项 ORDER BY Format(table33.CREATED, "dd-mm-yyyy");
使用提示
把上述查询设置为组合框的行来源,然后在组合框属性里把列数设为1,绑定列设为1,这样就能在组合框里看到去重后的dd-mm-yyyy格式日期啦。
内容的提问来源于stack exchange,提问作者Luke
相关产品推荐
相关产品推荐

