SQLite3 Date Ranges not working - sqlite

I cannot get date ranges to work properly in a query using SQLite3
Create And Populate Table:
create table dates(myDate DATE);
insert into dates values('2012-10-1');
insert into dates values('2012-10-2');
insert into dates values('2012-10-3');
insert into dates values('2012-10-4');
insert into dates values('2012-10-5');
insert into dates values('2012-10-6');
insert into dates values('2012-10-7');
insert into dates values('2012-10-8');
insert into dates values('2012-10-9');
insert into dates values('2012-10-10');
Query:
select * from dates where myDate >= '2012-10-1' and myDate < '2012-10-31';
Results:
2012-10-1
2012-10-2
2012-10-3
2012-10-10
Where are 10-4 - 10-9?
I get the same results if I use between:
select * from dates where myDate BETWEEN '2012-10-1' AND '2012-10-30';
If I change either of the queries to use '2012-11-1' as the end date, they work properly.
Any help would be greatly appreciated!

Date values must be in the format yyyy-mm-dd with fixed-width fields.
This is required because SQLite has no native date format; to compare date strings correctly, fields with the same meaning must always be at the same position in the string.

Related

I am having a problem with this date format change

I need help with this Teradata date format change
I have tried multiple queries and date formats and nothing seems to work
This was what I tried originally:
'''Teradata
select distinct concat(trim(EXTRACT(month FROM(rqst.admt_dt))), '/1/', trim(EXTRACT(year FROM(rqst.admt_dt)))) as MonYr
'''
When I create a volatile table with this it makes the datatype varchar(25) and I want the datatype as a date. I tried multiple cast date formats but none of the code was accurate. I decided to do this instead:
'''Teradata
select distinct rqst.admt_dt as MonYr
'''
After I run through all my scripts I end up with the final table and the MonYr is a date but I need to change any days that are not 01 to 01. Examples of the dates I end up with are:
6/02/2018
6/15/2018
6/22/2018
I tried this code to modify the DD to 01
'''Teradata
update dl_aa_tm_oprpt_s.TinaPAVDrop
set monyr = date format 'mm/01/yyyy'
'''
That does not work either. I am at a loss as to how to remedy this issue
If you want take a date and get the first day of that month:
SELECT
current_date - extract(day from current_date) + 1
Just replace current_date with your date column.

Checking if a Date falls within a Range of Dates in SQLITE

I have an sqlite table with with 2 date columns (beginning & end). I am looking for a query that returns the date range a date falls in. e.g Checking range where 10-02-2016 falls given 2 records as follows
(01-02-2016 - 12-02-2016) & (13-02-2016 - 20-02-2016)
Clearly it falls in the first range but how do I do it in SQLITE. Please help?
I think the problem is next SQLite requires dates to be in format YYYY-MM-DD. With that format you could write a simple query:
select * from table where yourdate between begin and end
If you can't change your format you should look at next sqlite functions https://sqlite.org/lang_datefunc.html
Also you can try substr function to cotact date in needed format.

SQLite3 DateTime comparison in linux

As per seen in image my first query return 5 rows but my second query does not return any rows.
It shoud be return 3 rows.
I also have tried with
Store my all datetime data in format of 'yyyy-MM-dd hh:mm:ss'
"SELECT billheaderid,billheadercode,billtotalitem,billtotalamount,createdby,createdon WHERE cretedon >= Datetime('2014-08-19 12:26:32')"
Date values with "AM/PM" fields cannot be compared correctly with string comparisons
(1 is larger than 0).
You have to change all the values in the database to the correct format yyyy-MM-dd hh:mm:ss.
(And it is not necessary to call the datetime function.)
Store your data in form of
'yyyy-MM-dd hh:mm:ss'
And please care that '2014-08-19 03:45 PM' must be store as '2014-08-19 15:45:23' not as '2014-08-19 03:45:23'.
After that you don't need use datetime function. I am sure it'll work 100%.

oracle 10g convert date column with timestamp to dd-mon-yyyy format

Hi am trying to convert column defined as date to date with format DD-MON-YYYY but can't get it working
select
to_date(to_char
(DESIGN_COMPLETION_DATE,'DD-MON-YYYY'),'DD-MON-YYYY') as Assessment_Completion_Date
from nbi_dates
Also Tried
Select to_date(DESIGN_COMPLETION_DATE,'DD-MON-YYYY') as Assessment_Completion_Date
from nbi_dates
What works is, but I can't do any calculations on it as it is char
Select to_char(DESIGN_COMPLETION_DATE,'DD-MON-YYYY') as Assessment_Completion_Date
from nbi_dates
Thanks
If you have a DATE that includes a time portion but are only interested in the actual date part, you can use the trunc function:
select trunc(design_completion_date) as assessment_completion_date from nbi_dates
An example of the difference using sysdate; notice the time on the trunc'd version has been set to midnight:
SQL> alter session set nls_date_format = 'DD/MM/YYYY HH24:MI:SS';
Session altered.
SQL> select sysdate, trunc(sysdate) from dual;
SYSDATE TRUNC(SYSDATE)
------------------- -------------------
11/04/2013 15:14:31 11/04/2013 00:00:00
A DATE has no inherent format. DD-MON-YYYY is a format mask applied to display the date, or to convert it to a string representation, which is usually only necessary for display anyway. What you have as your third option is right for that purpose, but not if you want to do any further date calculations with the result.
Select to_date(to_char(DESIGN_COMPLETION_DATE,'DD-MON-YYYY'),'DD-MON-YYYY') as Assessment_Completion_Date
from nbi_dates
or simply (in case you want date object for calculations but not for rendereing)
Select DESIGN_COMPLETION_DATE as Assessment_Completion_Date
from nbi_dates

SQLite Extract Month From Column

I have a column of data with this date format mm/dd/yyyy. I would like to covert to this to the format yyyy-mm-dd for (SQLite usage). How could I achieve this?
UPDATE Table_Name
SET Column_Name = 'yyyy-mm-dd' format
I have tried substr, ltrim, rtrim (None of this work for my case).
My data are dynamic.
Sample
Column_Name
6/1/2004
06/25/2004
7/1/2003
6/1/2004
6/1/2004
09/19/2003
09/30/2003
09/30/2003
09/30/2003
09/30/2003
The Goal: Extract only month from this Column (Without displaying unnecessary stuff)
Thank you.
The syntax for extracting a specific date element from a date field is to use strftime.
SELECT strftime('%m', Column_Name) AS month which is your second question. For reconstituting the date data you could use (at least in JavaScript) substr to split the date out then format it as you require. Also see this post:Get month from DATETIME in sqlite

Resources