把表中年和月两列整数拼成日期,为什么返回了空值

我在DolphinDB database GUI中执行下列代码:

tb=table(2001..2012 as yearOfRegistration,1..12 as monthOfRegistration)
select string(yearOfRegistration) + "." + string(monthOfRegistration) + ".01" as newcat from tb

结果正常,如下:
image.png
但改成:

select date(string(yearOfRegistration) + "." + string(monthOfRegistration) + ".01") as newcat from tb

执行后结果如下图,看了下,月份是一位数的,都变成空值了,为啥?
image.png

阅读 2k
2 个回答

DolphinDB中DATE默认格式是yyyy.MM.dd,如2020.01.01,如不符合这个格式,需要用datetimeParse进行转换。代码改为如下:

select temporalParse(string(yearOfRegistration) + "." + string(monthOfRegistration) + ".01","yyyy.M.dd") as newcat from tb

或者从MONTH类型转换为DATE:

select  date(1970.01M+(yearOfRegistration-1970)*12+monthOfRegistration-1) from tb

最高效的方法是根据年和月生成一个month对象,然后把month对象转换成date对象。DolphinDB的month对象内部是用一个整型来表示: year * 12 + month - 1

因此上面的代码可以改进为:

select month(yearOfRegistration *12 + monthOfRegistration-1).date() from tb

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进