Datetime Sybase 15中带有日期时间列的SELECT子句

Datetime Sybase 15中带有日期时间列的SELECT子句,datetime,select,sybase,where-clause,Datetime,Select,Sybase,Where Clause,我正试图在一个带有DATETIME列的表上执行这样的查询 SELECT * FROM table WHERE the_date = 2011-03-06T15:53:34.890-05:00 我将以下内容作为来自外部源的字符串输入: 2011-03-06T15:53:34.890-05:00 我需要对我的数据库表执行查询,并提取包含相同日期的行。在我的数据库中,它存储为DATETIME,如下所示: 2011-03-06 15:53:34.89 我可能可以稍微操纵外部输入(比如去掉-5:00)

我正试图在一个带有DATETIME列的表上执行这样的查询

SELECT * FROM table WHERE the_date = 
2011-03-06T15:53:34.890-05:00
我将以下内容作为来自外部源的字符串输入:

2011-03-06T15:53:34.890-05:00

我需要对我的数据库表执行查询,并提取包含相同日期的行。在我的数据库中,它存储为DATETIME,如下所示:

2011-03-06 15:53:34.89

我可能可以稍微操纵外部输入(比如去掉-5:00)。但我不知道如何使用datetime列进行简单的选择

我找到了转换函数,样式123似乎符合我的需要,但我无法让它工作。以下是有关样式123的参考链接


我认为该版本的文档中记录的convert有点错误

因为这种格式总是有世纪,我想你只需要使用23。通常,转换的100范围将世纪添加到年份格式中

这种格式只需要几秒钟,更重要的是

如果你想要更多,你需要一起通过2次转换。也就是说,将ymd部分转换为convert(varchar,datetime列,14),并与修剪后的字符串进行比较。毫秒比较可能是一个问题,这取决于您从何处获得大时间字符串,因为我认为Sybase二进制存储形式的粒度为300ms,因此如果您的源字符串来自其他地方,则不太可能进行比较。换句话说,去掉毫秒并作为字符串进行比较

所以也许:

从convert所在的表中选择*(varchar,the_date,23)= “2011-03-06T15:53:34”

但是如果有问题的话,列上的转换将阻止使用索引


如果您比较为datetimes,那么转换在rhs上-但是您必须知道\u日期中的毫秒数。然后就可以使用索引了。

我认为转换文件在那个版本的文档中记录得有点错误

因为这种格式总是有世纪,我想你只需要使用23。通常,转换的100范围将世纪添加到年份格式中

这种格式只需要几秒钟,更重要的是

如果你想要更多,你需要一起通过2次转换。也就是说,将ymd部分转换为convert(varchar,datetime列,14),并与修剪后的字符串进行比较。毫秒比较可能是一个问题,这取决于您从何处获得大时间字符串,因为我认为Sybase二进制存储形式的粒度为300ms,因此如果您的源字符串来自其他地方,则不太可能进行比较。换句话说,去掉毫秒并作为字符串进行比较

所以也许:

从convert所在的表中选择*(varchar,the_date,23)= “2011-03-06T15:53:34”

但是如果有问题的话,列上的转换将阻止使用索引

如果您比较为datetimes,那么转换在rhs上-但是您必须知道\u日期中的毫秒数。然后可以使用索引