【问题标题】:Sybase: Composing a WHERE for a timestamp datatypeSybase:为时间戳数据类型组成 WHERE
【发布时间】:2011-09-20 23:10:03
【问题描述】:

我正在尝试使用 Timestamp 数据类型的 Where 子句为 Sybase 编写 SQL Select 语句。

SELECT * FROM DEV.CONF WHERE LAST_UPDATE < '[some_date]'
  • LAST_UPDATE 列是数据类型 Timestamp。
  • 我尝试过使用 convert 函数和其他函数,但似乎无法正常工作。

【问题讨论】:

  • 那么问题出在哪里? some_date的格式?
  • @mu-is-too-short 问题是 LAST_UPDATE 的数据类型是时间戳,而不是日期时间。时间戳数据类型是二进制格式,我想将诸如 '6/16/2011 4:17:29' 之类的字符串转换为日期时间格式。所以我得到像“DATETIME”这样的错误在运行SELECT * FROM REPORT.CONF WHERE LAST_UPDATE &lt; CONVERT(DATETIME, '6/16/2011 4:17:29.463114 AM', 109)时使用的上下文中是无效的。

标签: sql select timestamp sybase where


【解决方案1】:

AFAIK,SQL 标准为时间戳指定 ISO 8601 格式,所以试试这个:

SELECT * FROM DEV.CONF WHERE LAST_UPDATE < '2011-06-16 04:17:29.463114'

您想在哪里使用“2011 年 6 月 16 日的 04:17:29.463114”作为您的时间戳。

在数据库级别,您应该只使用 ISO 8601 日期和时间格式,除非有很好的理由使用其他任何东西(这部分只是我有点固执己见:)。

【讨论】:

    猜你喜欢
    • 2011-03-30
    • 1970-01-01
    • 2012-08-19
    • 2018-06-24
    • 2012-02-17
    • 1970-01-01
    • 2020-03-28
    • 2012-08-29
    • 1970-01-01
    相关资源
    最近更新 更多