2013-10-19 77 views
-1

我在一個應用程序中有兩個不同的日期和時間表。在日期表中,「日期」以「日期時間」格式存儲,並且在時間表中「時間」部分以varchar格式存儲。在SQL Server 2008中將varchar轉換爲日期

這兩個表id都存儲在交易表中以獲取日期時間值。

我在查詢數據庫時遇到問題,指定事務表中的特定日期時間值。

日期表

ID_DAT   DATE_DAT (smalldatetime) 
20000101 01/01/2000 0:00 
20000102 02/01/2000 0:00 
20000103 03/01/2000 0:00 
20000104 04/01/2000 0:00 
20000105 05/01/2000 0:00 
20000106 06/01/2000 0:00 
20000107 07/01/2000 0:00 
20000108 08/01/2000 0:00 
20000109 09/01/2000 0:00 
20000110 10/01/2000 0:00 

時間表

ID_TIM HOUR_TIM MINUTE_TIM STRING_TIM (varchar) 
0 0   0   00:00 
1 0   1   00:01 
2 0   2   00:02 
3 0   3   00:03 
4 0   4   00:04 
5 0   5   00:05 
6 0   6   00:06 
7 0   7   00:07 
8 0   8   00:08 
9 0   9   00:09 
10 0   10   00:10 

交易數據樣本(ID可能不匹配所提供主)

SEQNUM ID_DAT   ID_TIM ORIGINAL_VALUE_PER 
2495089 20130424 30 10.0000000000 
2495089 20130424 60 12.0000000000 
2495089 20130424 90 15.0000000000 
2495089 20130424 120 20.0000000000 
2495089 20130424 150 24.0000000000 
2495089 20130424 180 28.0000000000 
2495089 20130424 210 34.0000000000 

現在我想查詢成交數據讓我們說在特定的一天03:30之後。

請指導我如何實現相同。

感謝

+4

我們怎樣才能幫助你,如果你不提供的示例數據和預期產出和你已經嘗試過? –

回答

0

隱約的東西是這樣的:

 SELECT * from TRANSACTION_TABLE TT 
    join DATE_TABLE DT on TT.ID_DAT = DT.ID_DAT 
    join TIME_TABLE TM on TT.ID_TIM = TM.ID_TIM 
    where (DT.DATE_DAT > '10/19/2013' and DT.DATE_DAT < '10/21/2013') 
or (DT.DATE_DAT = '10/21/2013' and HOUR_TIM < 3 and MINUT_TIME < 30) 
or (DT.DATE_DAT = '10/19/2013' and HOUR_TIM >= 3 and MINUT_TIME >= 30) 
+0

這將不起作用,因爲如果我提取數據3天,那麼在3天后我將獲得3.30之後的數據。對於第一天它是正確的,但是我們錯過了第二天和第三天從午夜到3.30的數據。 – Vish

+0

@Vish查看編輯 – SqlACID

+0

這也不起作用。花費太多時間,沒有結果。請提出一些其他解決方案。 – Vish

相關問題