date - Not accessing the value using between statement in sql -
date - Not accessing the value using between statement in sql -
i storing date varchar in database. when trying access info using between
operator in sql, values between dates, not giving proper output because stored date varchar. date in format (01/12/2013)(dd/mm/yyyy)
.
any thought access right info using between statement out changing date varchar date format?
thank you.
don't confused datatype - has nil problem. see if remove / in dates - real numbers: 20/02/2013 more 21 1000000 higher 01/02/2014
20/02/2013 = 20022013 01/02/2014 = 1022014
if varchar has numbers in order of date, month, year - must reorder them in field or in query right values, if in year month day, have varchar sort datetime.
solution 1: if must leave way in table, must this:
database table:
create table dates
( date_varchar
varchar(15) default null, date_datetime
datetime default null ) engine=myisam default charset=utf8
data:
date_varchar date_datetime 01/02/2013 2013-02-01 00:00:00 02/02/2013 2013-02-02 00:00:00 03/02/2013 2013-02-03 00:00:00 03/02/2014 2014-02-03 00:00:00 03/03/2013 2013-03-03 00:00:00 04/02/2013 2013-02-04 00:00:00 05/02/2013 2013-02-05 00:00:00
the query:
select * dates str_to_date(date_varchar,'%d/%m/%y') between '2013-02-03' , '2013-02-04'
will homecoming 2 records:
date_varchar date_datetime 03/02/2013 2013-02-03 00:00:00 04/02/2013 2013-02-04 00:00:00
soluion 2:
to alter order in varchar year, month, date in field. se table info below:
date_varchar date_datetime 2013/02/01 2013-02-01 00:00:00 2013/02/02 2013-02-02 00:00:00 2013/02/03 2013-02-03 00:00:00 2013/02/04 2013-02-04 00:00:00 2013/02/05 2013-02-05 00:00:00 2013/03/03 2013-03-03 00:00:00 2014/02/03 2014-02-03 00:00:00
now can select :
select * dates date_varchar between '2013/02/02' , '2013/02/03'
now numbers ordered in same way datetime - can remove / , - see numbers. varchars sorted same date_time
the query homecoming same 2 rows:
date_varchar date_datetime 2013/02/02 2013-02-02 00:00:00 2013/02/03 2013-02-03 00:00:00
solution 3:
this not you, because don't want alter table, include create complete. changing datatype datetime forced set numbers in right order , utilize query range between dates:
select * dates date_datetime between '2013-02-03' , '2013-02-04'
the same 2 record:
date_varchar date_datetime 03/02/2013 2013-02-03 00:00:00 04/02/2013 2013-02-04 00:00:00
example of problem:
now selecting dates varchar returns - guessed - same 2 records first query and more, happening you:
data:
date_varchar date_datetime 01/02/2013 2013-02-01 00:00:00 02/02/2013 2013-02-02 00:00:00 03/02/2013 2013-02-03 00:00:00 03/02/2014 2014-02-03 00:00:00 03/03/2013 2013-03-03 00:00:00 04/02/2013 2013-02-04 00:00:00 05/02/2013 2013-02-05 00:00:00 select * dates date_varchar between '03/02/2013' , '04/02/2013' date_varchar date_datetime 03/02/2013 2013-02-05 00:00:00 03/02/2014 2014-02-03 00:00:00 03/03/2013 2013-02-05 00:00:00 04/02/2013 2013-02-03 00:00:00
sql date varchar between
Comments
Post a Comment