Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

store AM PM time string into TIME datatype in MySQL and retrieve with AM PM while display?

I m entering date in front end as 10:00 AM , 12:00 PM etc...( means 12 Hours format). now I want to save that value in database in time datatype column. How do I save that AM PM value into time datatype in MySQL and again want to display time appending AM PM on front end?

like image 799
diEcho Avatar asked Jan 18 '10 13:01

diEcho


1 Answers

To insert:

# replace first argument of STR_TO_DATE with value from PHP/frontend
TIME( STR_TO_DATE( '10:00 PM', '%h:%i %p' ) );

To select:

# replace first argument with your time field
TIME_FORMAT( '22:00:00', '%h:%i %p' );

EDIT:
I'll just go ahead and presume you use mysql lib functions.

// first sanitize the $_POST input
// also, make sure you use quotes to identify the $_POST keys
$open = mysql_real_escape_string( $_POST[ 'MondayOpen' ] );
$close = mysql_real_escape_string( $_POST[ 'MondayClose' ] );

// this is the query, which should work just fine.
$sql = '
    INSERT INTO
        `table_lib_hours`
    SET
        `day_name` = "Monday",
        `day_open_time` = TIME( STR_TO_DATE( "' . $open . '", "%h:%i %p" ) ),
        `day_close_time` = TIME( STR_TO_DATE( "' . $close . '", "%h:%i %p" ) )
    ';

$result = mysql_query( $sql );

Then to retrieve the values:

$sql = '
    SELECT
        `day_open_time`,
        `day_close_time`,
        TIME_FORMAT( `day_open_time`, "%h:%i %p" ) as day_open_time_formatted,
        TIME_FORMAT( `day_close_time`, "%h:%i %p" ) as day_close_time_formatted
    FROM
        `table_lib_hours`
    WHERE
        `day_name` = "Monday"
    ';

$resultset = mysql_query( $sql );

This will return a result set where the formatted data is in the *_formatted fields

EDIT:
Adjusted %m (month) to %i (minutes). A thank you to Donny for the well spotted slip up.

like image 139
Decent Dabbler Avatar answered Oct 27 '22 17:10

Decent Dabbler