代码之家  ›  专栏  ›  技术社区  ›  Austin Salonen gmlacrosse

悖论:查询日期列+时间列作为日期时间

  •  1
  • Austin Salonen gmlacrosse  · 技术社区  · 16 年前

    首先,我是个自相矛盾的新手。
    其次,我在查询第三方软件包的数据库,不能更改模式。

    我有两个简单命名为“日期”和“时间”的字段,我想将它们作为日期时间进行查询(根据我的MS SQL经验)。

    这有可能吗?

    我尝试了几个查询,当命令有效时,我会得到“条件表达式中的数据类型不匹配”。

    此外,如果这有什么不同的话,这将来自大约1999-2000年的Paradox数据库。

    编辑:即使是字段的简单字符串串联也会有很大帮助,因为我可以在代码中处理这个问题。

    编辑:回应A.I.Breveleri的回答。我收到这个消息:

    错误[42000][Microsoft][ODBC Paradox driver]语法错误(丢失 运算符)在查询表达式中 '强制转换(m.datecomplete as timestamp)' 强制转换([1/1/3000]作为时间戳)+ 强制转换(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 
    
    2 回复  |  直到 16 年前
        1
  •  1
  •   Eugene Yokota    16 年前
     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
    

    给你组合的时间。

        2
  •  1
  •   A. I. Breveleri    16 年前

    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
    

    - Al。