2011-03-06 59 views
0

我正試圖在帶有DATETIME列的表上執行這樣的查詢。在Sybase 15中使用DATETIME列的SELECT子句

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列做簡單的選擇。

我發現convert函數和123風格似乎符合我的需求,但我無法得到它的工作。這裏是鏈接引用約123風格

http://infocenter.sybase.com/help/index.jsp?topic=/com.sybase.help.ase_15.0.blocks/html/blocks/blocks125.htm

回答

3

我認爲,可以轉換成在該版本的文檔的輕微錯誤記錄。

因爲這種格式總是有世紀,我認爲你只需要使用23.通常100轉換範圍將世紀添加到年份格式。

這種格式只能下降到秒以上。

如果你想要更多,你需要過去一起2 x轉換。也就是說,將一個ymd部分放到一個convert(varchar,datetime-column,14)上並與您的裁剪字符串進行比較。毫秒比較可能是一個問題,具體取決於你在哪裏得到大的時間字符串,因爲Sybase二進制存儲表單的粒度爲300毫微米,我認爲,所以如果你的源字符串來自其他地方,它不可能比較。換句話說 - 剝去毫秒並比較字符串。

所以也許:

SELECT * FROM表WHERE轉換(VARCHAR,the_date,23)= '2011-03-06T15:53:34'

但塔上的轉換會阻止使用索引,如果這是一個問題。

如果您比較日期時間,那麼轉換是在rhs上 - 但您必須知道您的毫秒在the_date中。然後可以使用索引。