以下是我的查询。我遇到的问题是B.REVISED_DATE是一个字符串和B.REVISED_DATE一个日期,当我尝试运行查询时,我得到一个数据不匹配错误。我想要做的是将B.REVISED_DATE更改为字符串,但我不记得确切的语法。我使用microsoft access作为数据库。任何帮助将不胜感激。
SELECT A.ICAO, A.RWY, A.REVISED_DATE, B.REVISED_DATE
FROM RUNWAYS A, RUNWAYS_UPDATABLE B, AIRPORT_CHECKLIST C
WHERE A.RWYKEY = B.RWYKEY
AND A.ICAO = C.ICAO
AND A.REVISED_DATE <> B.REVISED_DATE
AND TO_CHAR(B.REVISED_DATE) <> C.EMAIL_DATE
ORDER BY A.ICAO
答案 0 :(得分:4)
Access'数据库引擎不支持TO_CHAR功能。
如果B.REVISED_DATE是日期/时间数据类型而C.EMAIL_DATE是文本,则可以使用CDate()从C.EMAIL_DATE获取日期/时间值。
B.REVISED_DATE <> CDate(C.EMAIL_DATE)
如果您更喜欢使用等同于B.REVISED_DATE的文本,则可以使用CStr()函数。但是,除非格式与C.EMAIL_DATE相同,否则您的不等式比较可能很麻烦。你可能最好使用Format(),以便REVISED_DATE的格式与EMAIL_DATE相同
Format(B.REVISED_DATE, "mm/dd/yyyy") <> CDate(C.EMAIL_DATE)
但是对我来说比较两个日期似乎更简单,所以你不必担心格式化问题。
答案 1 :(得分:1)
如果您希望将B.Revised_Date转换为字符串,请使用Format()函数。
Format(B.Revised_Date, "Format of date here")
格式会将您的日期转换为您想要使用的任何格式here
如果您希望将B.Revised_Date转换为日期,请使用CDate()函数。
CDate(B.Revised_Date)
因此,如果您希望将两个日期都设为文本,那么您可以按照以下方式执行操作。
AND Format(A.REVISED_DATE, "MM/dd/yyyy") <> Format(B.REVISED_DATE, "MM/dd/yyyy")
或者您希望格式化日期。
希望这有帮助!