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

Popular posts from this blog

web services - java.lang.NoClassDefFoundError: Could not initialize class net.sf.cglib.proxy.Enhancer -

Accessing MATLAB's unicode strings from C -

javascript - mongodb won't find my schema method in nested container -