Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Find rows in a database with no time in a datetime column

Tags:

sql

coldfusion

During testing I have failed to notice an incorrect date/time entry into the database on certain orders. Instead of entering the date and time I have only been entering the date. I was using the correct time stamp createodbcdatetime(now()) however I was using cfsqltype="cf_sql_date" to enter it into the database.

I am lucky enough to have the order date/time correctly recorded, meaning I can use the time from the order date/time field.

My question being can I filter for all rows in the table with only dates entered. My data below;

Table Name: 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

Table Name: 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

I need to be able to select all payments with no time entered from tbl_payments, i can then loop around the results grabbing the time from my order table add it to the date from my payment table and update the field with the new date/time.

I can pretty much handle the re-inserting the date/time. It's just selecting the no time rows I'm not sure about?

Any help would be appreciated.

The following is the select statements for both orders and payments and if they need to be joined.(just fyi)

SQL Server 2008, Cold Fusion 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
like image 528
Jason Congerton Avatar asked Nov 14 '12 17:11

Jason Congerton


1 Answers

Select the records where the hours, minutes, seconds and millisecond value is zero.

select *
from table
where datePart(hour, datecolumn) = 0
and datePart(minute, datecolumn) = 0
and datePart(second, datecolumn) = 0
and datePart(millisecond, datecolumn) = 0
like image 155
Nathan Strutz Avatar answered Sep 30 '22 13:09

Nathan Strutz