2012-11-14 62 views
5

在測試期間,我沒有注意到某些訂單上的數據庫中的日期/時間不正確。我只輸入日期,而不是輸入日期和時間。我用的是正確的時間戳createodbcdatetime(now())不過我是用cfsqltype="cf_sql_date"將其輸入到數據庫中。在日期時間列中查找數據庫中沒有時間的行

我很幸運能夠正確記錄訂單日期/時間,這意味着我可以使用訂單日期/時間字段中的時間。

我的問題是我可以篩選表中的所有行,只輸入日期。我的數據如下;

表名:tbl_orders

uid_orders dte_order_stamp 
2000   02/07/2012 03:02:52 
2001   03/07/2012 01:24:21 
2002   03/07/2012 08:34:00 

表名:tbl_payments

uid_payment dte_pay_paydate  uid_pay_orderid 
1234   02/07/2012 03:02:52 2000 
1235   03/07/2012   2001 
1236   03/07/2012   2002 

我需要能夠選擇不從tbl_payments輸入的時間所有付款,然後我就可以循環圍繞結果抓取我的訂單表中的時間將其添加到我的付款表中的日期,並用新的日期/時間更新字段。

我幾乎可以處理重新插入日期/時間。這只是選擇我不確定的時間行嗎?

任何幫助,將不勝感激。

以下是這兩個訂單和支付,如果他們需要被連接的select語句。(僅供參考)

SQL Server 2008中,冷聚變9

SELECT 
    dbo.tbl_orders.uid_orders, 
    dbo.tbl_orders.dte_order_stamp, 
    dbo.tbl_payment.dte_pay_paydate, 
    dbo.tbl_payment.uid_pay_orderid 
    FROM 
    dbo.tbl_orders 
    INNER JOIN dbo.tbl_payment ON (dbo.tbl_orders.uid_orders = dbo.tbl_payment.uid_pay_orderid) 


    SELECT 
    dbo.tbl_orders.uid_orders, 
    dbo.tbl_orders.dte_order_stamp 
    FROM dbo.tbl_orders 

SELECT 
    uid_paymentid, 
    uid_pay_orderid, 
    dte_pay_paydate, 
FROM 
    dbo.tbl_payment 
+0

請問你爲什麼會想這些信息存儲在兩個地方?就表面而言,我想我會質疑數據結構。 – mikeY

+0

嗨米奇 的原因,它是在兩個地方是,客戶將能夠支付賬戶和支付日期/時間將記錄個人繳費。然而,我很幸運,客戶還沒有開始這樣做,因此訂單已經在訂貨的同時得到解決,因此我現在可以把訂單拖到現在。在以後的日子裏,這些將幾乎確定不同的日期和時間。 –

+0

好的。我懂了。僅僅因爲tbl_payments中的結算日期等於訂單日期並不意味着它總是會這樣。對於訂單#2001,客戶x可能會在tbl_payments中進行多次付款。感謝您的解釋。我只是好奇而已。 – mikeY

回答

6

選擇小時,分鐘,秒和毫秒值爲零的記錄。

select * 
from table 
where datePart(hour, datecolumn) = 0 
and datePart(minute, datecolumn) = 0 
and datePart(second, datecolumn) = 0 
and datePart(millisecond, datecolumn) = 0 
+0

嗨彌敦道,這工作完美!謝謝! –

6

你也許可以得到這些通過數值來castingtime檢查0:

SELECT * FROM table WHERE CAST(datetimecolumn AS TIME) = '00:00' 

這可能不是特別有效,雖然,這取決於智能SQL如何服務r的索引是。

+0

+1使用'time':) – Leigh

+0

嗯...運行這段代碼時我得到的時間與tinyint不兼容?該字段絕對設置爲datetime? –

+1

嗯可能需要'= '00:00''而不是'= 0'或類似的東西。我沒有用於測試的SQL Server副本。 –

3

像這樣的東西應該工作:

.... 
WHERE CAST(CONVERT(VARCHAR, dbo.tbl_payment.dte_pay_paydate, 101) AS DATETIME) = 
      dbo.tbl_payment.dte_pay_paydate 

這將返回在時間丟失的所有行。

+0

這適用於extra = removed(按照Leigh的建議)謝謝。 –

+1

僅供參考,解答更新以糾正小寫字母錯誤。 – Leigh

相關問題