get date value for db in android - android

I am storing from-date and to-date in my sqlite db in 2012-02-15 00:02:03 format. Now how can retrieve this. I tried with the following query .. where did i go wrong.
select category,sum(amount) from inbox where strftime(currentdate) > strftime(fastdate)
it shows error. can any one help me to solve this

You are not using strftime correctly.
strftime('format', 'time')
It takes a format and a string version of the time. You are not putting the time in as a string at all.
You can see all the different formats and some examples here.
Your comparison should look like this...
strftime('%s','currentdate') > strftime('%s','fastdate')

Related

ActiveAndroid: Date columns not created

I am trying to store a Person object with ActiveAndroid. I set the birthdate like this: person.setBirthdate(new java.sql.Date((new Date()).getTime()));. After assigning all data i am calling person.save();.
I get a list of all persons from the database with this command: new Select().from(Person.class).execute();
If I do not close the app everything works fine (birthdate is always returned correctly from the database). However, when I close the app completely and then restart it, the birthdate is always null. All other fields (first name, last name etc.) are correct.
I really don't know why this is happening and would appreciate some help!
EDIT: After taking a closer look at my database I found out that the birthdate-column is not created. I am still not sure why the data is available when not closing the app though.
Second EDIT: I added a new column (a string) which is saved to the database and works just fine. So the problem is not an outdated database. All columns but the date column get created.
I also changed the date datatype to a string. The birthdate was then saved. Changing it back to a Date datatype resulted in the original problem again. Really weird... Does anyone know whats going on?
It should be some caching problem.
for saving Date try to use type serializer. it is so easy just read this page.

Implementing OR Condition using Parse Android SDK?

I am new to Parse and i am working on a Project that uses Android PARSE Sdk so i was wondering on how can i make a where query with or condition using the android sdk.
I want to make a query like this [Psuedo code]
Select * from employ where employId is ("1","2","3")
I found this on parse documentation, i don't know if it helps or not.
Edit:
This is what i found on PARSE but its not working
String[] id= {"1","2","3"};
query.whereContainedIn("employId ", Arrays.asList(id));
It returns me an empty list but if i query them one by one i get result... Can anyone tell me whats wrong ?
You can use whereContainedIn to select specific rows. See this post you can get more ideas. https://www.parse.com/questions/different-arrays-and-wherecontainedin-for-android.
List<String> employId = new ArrayList<String>();
employId.add("1"); employId.add("2"); employId.add("2");
query.whereContainedIn("employId", employId);
If you are still not clear. check this https://www.parse.com/docs/android_guide#queries
I have found the solution and i must say its pretty lame of PARSE to not mention this anywhere in there documentation.
The problem was that the values that i was using inwhereContainedIn method were of type String but in reality they were pointers to another table's row.
I was trying to get the values using only there ids[as it is displayed on parse] but instead i had to pass the whole object in order to retrieve them. That was the reason on why it was returning empty list.
The thing is Even though it displays IDs [pointer to object in a table] we cant search using only ID's instead we have to use complete Parse objects if we want to search a table based on Specific Object.

solution for SQLite function for time difference without java code

Hey please pay attention to solve this problem I know this could be possible but I am not getting the way ..
I am using sqlite in android to store and manipulate the field as shown below in the figure
Figure http://s16.postimage.org/idc13pxdh/image.png
first_start_time,last_start_time,last_end_time are datetime field in SQLite database
I need to get the difference of last_start_time and last_end_time as mean of function so that I don't need to do it programatically
last_end_time = strftime('%Y-%m-%d %H:%M:%S','now','localtime')
last_start_time= strftime('%Y-%m-%d %H:%M:%S','2012-01-27 02:34:56')
,i,e if my firsttime is =2012-06-15 14:54:33
and Endtime is =2012-06-15 14:54:40
then time diff would be like this =00:00:14;
i want to have such difference time like last_end_time -last_start_time
i also want to use trigger to do use in sqlite data base in android
at the last I need that all my total_expended_time should get summed up like ...
select sum(total_expended_time) from study_result
.. one thing keep in mind the result should be in datetime stamp so that i can reflect it to my UI
Any suggestion will be appreciated

Sort lists by date?

I have a question. In my app I have saved in my database some lists. Each list has asociated a date in this format 6-June-2011. How can I order these lists by date? I wrote I function like that :
public Cursor getAll(){
return (mDb.rawQuery("SELECT _id, Title, Shop , Data , Budget_allocated ," +
" Budget_spent FROM Lists ORDER BY Data",null));
}
but it doesn't work fine. I think it compare only the day. For example, if I have 31-May-2011 and 6-June-2011, it will say that the first date is after the second date.
It is possible what I am trying to do? Should I modify the date in format like this :6-06-2011?
Thanks..
I don't know anything about android development, but it sounds like your date field is stored as a string rather than a date, is that correct?
If so, you can either:
Change your table so that field is a date (then it should compare correctly)
Or store it in a standard format such that the default string comparison sorts dates correctly. Since string comparison sorts first on first character, second on second character, etc, this would be putting the biggest time difference first, ie. "2011-05-31" (include the zeroes).
(You should be able to convert the field by making a new field, copying the data from the old field into the new field in the correct format, and then deleting the old field and renaming the new one, or more simply if you simply want to change the format of the text. You should be able to do this either from code, or with an "update" query, AFAIK.)
Use a date format as follows...yyyy-MM-dd HH:mm:ss. This is guaranteed to be sortable in ascending or descending order.
If your Data column is not of type datetime there may be an issue. Take a look at this related SO question and answers:
SQL ORDER BY date problem

TimeFormatException while using time.parse()?

I'm trying to persistently store time data. I write the time to the preferences as a string passing it the time.toString(), and then restore it from the string by using the time.parse(String) method. However, I find that the parse method is throwing a TimeFormatException, specifically:
android.util.TimeFormatException: Unexpected character 0x41 at pos=15. Expected Z
I use logcat to view the string i am passing to parse, and it looks normal:
20110321T021030America/Detroit(1,79,-14400,1,1300687830)
Can anyone figure out why this is? Does the "expected Z" mean the letter Z specifically, or does it mean any integer, or what? And why is this happening? It seems like parsing a Time's toString() would be the easiest way to ensure that there ISN'T a timeformatexception, and yet I am still getting one.
It probably just doesn't recognise the format. You could use time.getTime() to get the unix time value instead, this might be easier to use.
The problem with parsing the date format which has been passed to time.parse(); function
Please refer the link to rectify you problem
Custom Date and Time Format Strings

Categories

Resources