+ Reply to Thread
Results 1 to 7 of 7

Thread: SQL Date

  1. #1
    Join Date
    Mar 2008
    Posts
    7,145
    Rep Power
    86

    SQL Date

    SQL Date

    SQL provides a lot of functions for manipulating dates in a database. You can store values in a date field or a datetime field. If you store the dates as unix_timestamps you can get a lot more flexibility with dates. In fact, this is usually what is done when you are using PHP with the database.

    It might even make sense to store them as timestamps anyways. This is because I always convert them to timestamps before I use them.


    Creating the Database

    We are going to create a test database with a people table. The people table will contain these fields:
    • id
    • name
    • date

    First, the code to create the database:

    Code:
    CREATE DATABASE `test` ;
    Now, we need to create the table.

    Code:
    CREATE TABLE `test`.`people` (
    `id` INT NOT NULL AUTO_INCREMENT PRIMARY KEY ,
    `name` VARCHAR( 100 ) NOT NULL ,
    `date` DATE NOT NULL
    ) ENGINE = MYISAM ;
    This table contains 3 fields just like we said it would. Now let us add some data. The format for the date needs to be yyyy-mm-dd.

    The date could be when they registered to a web site or when they first made an order, or whatever.

    Populating the table

    Code:
    INSERT INTO `people` (`id`, `name`, `date`) VALUES
    (1, 'James', '2009-09-16'),
    (2, 'Joe', '2009-09-30'),
    (3, 'Jack', '2009-09-18');
    We are going to insert 3 rows of data.


    UNIX_TIMESTAMP function

    Like I said earlier, it is easier to work with dates as numbers. This number is the unix timestamp which is the number of milliseconds that have past since January 1st, 1900.

    To see how this works let us select all the UNIX_TIMESTAMPS from the database.

    Code:
    SELECT UNIX_TIMESTAMP(date) AS theDate FROM people;
    The resulting output is:



    These values are the unix timestamps representing the dates that we inserted above. We can use these values to compare dates. This allows us to select rows that occur between the two days.

    A date occurs between two dates if the unix_timestamp is >= the test date and <= the test date.

    BETWEEN clause


    We use the BETWEEN clause to test if a date occurs between two dates.

    Let us return all results that occur between '2009-09-16' and '2009-09-18'.


    The SQL query is simply:

    Code:
    SELECT * FROM people WHERE UNIX_TIMESTAMP(date) BETWEEN UNIX_TIMESTAMP('2009-09-16') AND UNIX_TIMESTAMP('2009-09-18')
    The result is:



    I convert the date field that I am comparing to a unix_timestamp and I also convert the dates that I am testing it to a unix timestamp. This makes comparing easy.
    Attached Thumbnails Attached Thumbnails SQL Date-between.jpg  
    Attached Images Attached Images  

  2. CODECALL Circuit advertisement
    Join Date
    Always
    Posts
    Many

     
  3. #2
    Jordan Guest

    Re: SQL Date

    SQL makes using dates easy. My favorite being the Unix Timestamp. +rep!

  4. #3
    Join Date
    Mar 2008
    Posts
    7,145
    Rep Power
    86

    Re: SQL Date

    I like the UNIX_TIMESTAMP function also. You showed me that. You have no idea how useful it was.

    I am very thankful that these functions are so easy. My last project used SQL dates a lot. That function made it so much easier for me.

  5. #4
    Join Date
    Jul 2006
    Posts
    16,486
    Blog Entries
    75
    Rep Power
    143

    Re: SQL Date

    Oracle + dates = headache.
    MySQL + dates = nice
    +rep
    Programming is a branch of mathematics.
    My CodeCall Blog | My Personal Blog

  6. #5
    Join Date
    Mar 2008
    Posts
    7,145
    Rep Power
    86

    Re: SQL Date

    I don't know anything about oracle. Why do you say that?

    I probably should mention that I'm using MySQL for all my tutorials.

  7. #6
    Join Date
    Jul 2006
    Posts
    16,486
    Blog Entries
    75
    Rep Power
    143

    Re: SQL Date

    Oracle has a default date/time string format. If you don't pass it a properly formatted string, it rejects it. You can alter it for your session, or use the to_date function, but if your app is out of sync with the db, you can have major headaches.
    Programming is a branch of mathematics.
    My CodeCall Blog | My Personal Blog

  8. #7
    Join Date
    Apr 2009
    Location
    Trapped in my own little world.
    Posts
    2,487
    Rep Power
    33

    Re: SQL Date

    I have a book on Oracle, its on my todo list, currently reading database systems (A practical approach to design, implementation, and management).

    Databases are always fun to play with. I would rep you but I have no rep for you lol.

+ Reply to Thread

Thread Information

Users Browsing this Thread

There are currently 1 users browsing this thread. (0 members and 1 guests)

Similar Threads

  1. SQL date query...
    By nick3 in forum Database & Database Programming
    Replies: 5
    Last Post: 09-21-2010, 12:10 AM
  2. discount from date to date
    By yonghan in forum PHP Development
    Replies: 2
    Last Post: 11-11-2009, 04:17 AM
  3. Date help
    By Whitey in forum PHP Development
    Replies: 3
    Last Post: 02-21-2008, 10:04 PM
  4. PHP date question
    By GMailGuy in forum PHP Development
    Replies: 11
    Last Post: 01-28-2008, 06:05 AM
  5. Calculating the date
    By WingKalimdor in forum Java Help
    Replies: 1
    Last Post: 01-07-2008, 02:26 PM

Tags for this Thread

Bookmarks

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts