您好, 欢迎来到 !    登录 | 注册 | | 设为首页 | 收藏本站

在where子句中将十进制转换为日期

在where子句中将十进制转换为日期

我明白了:您想要某种重新排列数字的位数以使其成为日期的方式。看起来像是编码[m]mddyyyy。(为什么date数据库中没有该数据类型?)

该数字需要转换为字符串,然后将子字符串排列并转换为日期。考虑到这里的复杂性,应该编写转换函数来代替将字段更改为适当的数据类型。应该执行以下操作(未测试,无法访问db2):

create function decimaldate(decdate DECIMAL) 
returns DATE
return
with tmp (dstr) as
(
    select substr(digits (decdate),8)
    from sysibm.sysdummy1
)
select
  date (substr(dstr,4,4) || '-' ||
        substr(dstr,1,2) || '-' ||
        substr(dstr,3,2)
       )
from tmp

这会将数字转换为字符串,将字符串重新格式化为yyyy-mm- dd并转换为日期。(我以此为基础。)

因此,解决原始问题的方法就是编写:

SELECT * 
FROM table1
WHERE decimaldate(DECIMALCOLUMN) = @date

通过这种在数据库中编码日期的简便方法,拥有始终可用的功能将被证明是无价的。

其他 2022/1/1 18:53:11 有346人围观

撰写回答


你尚未登录,登录后可以

和开发者交流问题的细节

关注并接收问题和回答的更新提醒

参与内容的编辑和改进,让解决方法与时俱进

请先登录

推荐问题


联系我
置顶