# Date\_select

**URL:** <https://www.ruby-forum.com/t/date-select/168469>\
**Category:** Rails\
**Created:** [May 21, 2009, 3:54am UTC](https://www.ruby-forum.com/t/date-select/168469 "2009-05-21T03:54:43Z")\
**Posts on this page:** 7\
**Page:** 1

<div class="post-metadata">

**Author:** ![knappe](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/k/5fc32e/32.png) [@knappe](https://www.ruby-forum.com/u/knappe)\
**Post date:** [May 21, 2009, 3:54am UTC](https://www.ruby-forum.com/t/date-select/168469/1 "2009-05-21T03:54:43Z")

</div>

I don’t really understand how forms are generated so this may be a very  
easy question.

I have some code that does a date select:

```
    <p>
            <%= f.label :StartDate%> <br />
            <%= f.date_select :start_date %>
    </p>

    <p>
            <%= f.label :EndDate %> <br />
            <%= f.date_select :end_date %>
    </p>

```

Which results in the following when posted:

Checked Out Times:  
Start: 05-20-2009 18:30:20  
End: 05-21-2009 19:30:20

However, when I go to edit the time I see the following in the date  
select:

Start Time: 20:18  
End Time : 20:19

This occurs because my times are stored in the database as:

| 20:19:17 | 20:20:17 or as mm:hh:ss

Thus when the edit occurs it grabs the seconds and the minutes. Is  
there a way to change the form to properly select the correct time?  
I’ve tried :order =\> [:hour, :minute, :second] like here  
([How do I handle date objects in ruby on rails forms? - Stack Overflow](http://stackoverflow.com/questions/732806/how-do-i-handle-date-objects-in-ruby-on-rails-forms))  
but haven’t found a way to do it. Am I using the wrong type of form?  
Should I be querying the database in a different way?

---

<div class="post-metadata">

**Author:** ![knappe](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/k/5fc32e/32.png) [@knappe](https://www.ruby-forum.com/u/knappe)\
**Post date:** [May 21, 2009, 9:28am UTC](https://www.ruby-forum.com/t/date-select/168469/2 "2009-05-21T09:28:48Z")

</div>

If you save it in the database as a datetime then all should be well.  
If  
that is not possible then you could have a virtual datetime member that  
you  
setup in a filter after reading it from the db and this is what goes to  
the  
form. You can then put the code converting it back to your homespun  
format  
in another filter before writing to the db.

2009/5/21 Tyler K. [removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid)

---

<div class="post-metadata">

**Author:** ![knappe](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/k/5fc32e/32.png) [@knappe](https://www.ruby-forum.com/u/knappe)\
**Post date:** [May 21, 2009, 5:08pm UTC](https://www.ruby-forum.com/t/date-select/168469/3 "2009-05-21T17:08:07Z")

</div>

WJSimacek wrote:

> On May 21, 2:28ï¿½am, Colin L. [removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid) wrote:
> 
> > If you save it in the database as a datetime then all should be well. ï¿½If
> 
> Have you tried using the :db format?:
> 
> ```
> Time.now.to_s(:db) # this forces the save to the db in
> 
> ```
> 
> compatable formats
> 
> – Wayne

I’m not sure how to add this to the code. I’ve found form helpers very  
unintuitive. Can anyone point me towards a good guide or documentation?

Thanks,  
-Tyler

---

<div class="post-metadata">

**Author:** ![knappe](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/k/5fc32e/32.png) [@knappe](https://www.ruby-forum.com/u/knappe)\
**Post date:** [May 21, 2009, 1:36pm UTC](https://www.ruby-forum.com/t/date-select/168469/4 "2009-05-21T13:36:32Z")

</div>

On May 21, 2:28 am, Colin L. [removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid) wrote:

> If you save it in the database as a datetime then all should be well. If

Have you tried using the :db format?:

```
    Time.now.to_s(:db) # this forces the save to the db in

```

compatable formats

– Wayne

---

<div class="post-metadata">

**Author:** ![knappe](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/k/5fc32e/32.png) [@knappe](https://www.ruby-forum.com/u/knappe)\
**Post date:** [May 21, 2009, 6:31pm UTC](https://www.ruby-forum.com/t/date-select/168469/5 "2009-05-21T18:31:50Z")

</div>

2009/5/21 Tyler K. [removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid)

> >

I may have to be corrected, but I don’t think this is necessary. If the  
db  
column is datetime (as defined in the migration and schema.rb) then the  
value in a DateTime object should be written (and read) automatically in  
the  
appropriate format.

Colin

---

<div class="post-metadata">

**Author:** ![knappe](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/k/5fc32e/32.png) [@knappe](https://www.ruby-forum.com/u/knappe)\
**Post date:** [May 21, 2009, 6:53pm UTC](https://www.ruby-forum.com/t/date-select/168469/6 "2009-05-21T18:53:46Z")

</div>

Colin L. wrote:

> 2009/5/21 Tyler K. [removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid)
> 
> > >
> 
> I may have to be corrected, but I don’t think this is necessary. If the  
> db  
> column is datetime (as defined in the migration and schema.rb) then the  
> value in a DateTime object should be written (and read) automatically in  
> the  
> appropriate format.
> 
> Colin

Would this be true of date and time fields? That is how I am storing  
them right now… I’m tempted to make the switch to datetime; it just  
seems to be easier in the long run and I now know how to filter the date  
and times from the single field.

---

<div class="post-metadata">

**Author:** ![knappe](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/k/5fc32e/32.png) [@knappe](https://www.ruby-forum.com/u/knappe)\
**Post date:** [May 21, 2009, 8:30pm UTC](https://www.ruby-forum.com/t/date-select/168469/7 "2009-05-21T20:30:57Z")

</div>

I don’t know about date and time types.  
Colin

2009/5/21 Tyler K. [removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid)
