悖论:查询日期列 + 时间列作为日期时间
Posted
技术标签:
【中文标题】悖论:查询日期列 + 时间列作为日期时间【英文标题】:Paradox: Query a Date column + a Time column as a DateTime 【发布时间】:2009-06-25 19:55:34 【问题描述】:首先,我是 Paradox 新手。 其次,我正在查询第三方软件包的数据库,无法更改架构。
我有两个简单命名为“日期”和“时间”的字段,我想将它们作为 DateTime 进行查询(根据我的 MS SQL 经验)。
这可能吗?
我尝试了几个查询,当命令有效时,我得到“条件表达式中的数据类型不匹配”。
此外,如果这有什么不同的话,这将来自大约 1999 年至 2000 年的 Paradox 数据库。
编辑:即使是字段的简单字符串连接也会有很大帮助,因为我可以在代码中处理它。
编辑:回应 a.i.breveleri 的回答。我收到这条消息:
错误 [42000] [Microsoft][ODBC 悖论 驱动程序]语法错误(缺失 运算符)在查询表达式中 'CAST(m.DateComplete AS TIMESTAMP) - CAST([1/1/3000] 作为时间戳) + CAST(m.TimeComplete AS TIMESTAMP)'。
当我运行这个查询时:
select distinct
CAST(m.DateComplete AS TIMESTAMP) -
CAST("1/1/3000" AS TIMESTAMP) +
CAST(m.TimeComplete AS TIMESTAMP)
from Mean m
【问题讨论】:
你写的是QBE查询还是SQL查询? “日期”和“时间”列的 Paradox 数据类型是什么? -阿尔。 SQL查询;我对数据类型的最佳猜测是“日期”是日期列,“时间”是字符串。 抱歉这么密集,但是您是否使用 Paradox for Windows 来访问数据?如果没有,您如何连接到 Paradox 数据库?其他 SO 主题表明,这样的查询可能对 ODBC 驱动程序的选择很敏感。 -阿尔。 【参考方案1】: SELECT CAST(f.DateColumn AS VARCHAR(20)) + ' ' + CAST(f.TimeColumn AS VARCHAR(20))
FROM Foo f
这给了你连接的字符串。
SELECT CAST(CAST(f.DateColumn AS VARCHAR(20)) + ' ' + CAST(f.TimeColumn AS VARCHAR(20)) AS TIMESTAMP) As FooTime
FROM Foo f
为您提供综合时间。
【讨论】:
运行“..., cast(Date as varchar(20)) ...”时出现“缺少运算符”错误 日期是保留字,所以你可能需要双引号。【参考方案2】:QBE 查询:
Query
ANSWER: :PRIV:ANSWER.DB
test.db | Date | Time |
| _x | _y, calc _x+_y as "DateTime" |
EndQuery
SQL 查询:
SELECT DISTINCT
CAST(D0."Date" AS TIMESTAMP) -
CAST("1/1/3000" AS TIMESTAMP) +
CAST(D0."Time" AS TIMESTAMP)
FROM
"test.db" D0
-阿尔。
【讨论】:
将 SQL 查询与 MS ODBC 驱动程序一起使用时出现语法错误。我已经更新了我的问题。 看起来 Microsoft ODBC 桌面数据库驱动程序(可能是 ODBCJT32.DLL)正在将“1/1/3000”更改为 [1/1/3000]。尝试使用单引号“1/1/3000”。或者,您可以查看 DataDirect Technologies(以前称为 Merant,INTERSOLV ODBC 驱动程序的制造商)以获取替代驱动程序。 -阿尔。以上是关于悖论:查询日期列 + 时间列作为日期时间的主要内容,如果未能解决你的问题,请参考以下文章