Title: Incorrect Datetime Bug Fix
Author: Eddie Moya
Published: <strong>ነሐሴ 23, 2011</strong>
Last modified: ጥር  7, 2013

---

Search plugins

This plugin **hasn’t been tested with the latest 3 major releases of WordPress**.
It may no longer be maintained or supported and may have compatibility issues when
used with more recent versions of WordPress.

![](https://s.w.org/plugins/geopattern-icon/incorrect-datetime-bug-plugin-fix.svg)

# Incorrect Datetime Bug Fix

 By [Eddie Moya](https://profiles.wordpress.org/eddiemoya/)

[Download](https://downloads.wordpress.org/plugin/incorrect-datetime-bug-plugin-fix.1.1.zip)

 * [Details](https://am.wordpress.org/plugins/incorrect-datetime-bug-plugin-fix/#description)
 * [Reviews](https://am.wordpress.org/plugins/incorrect-datetime-bug-plugin-fix/#reviews)
 *  [Installation](https://am.wordpress.org/plugins/incorrect-datetime-bug-plugin-fix/#installation)
 * [Development](https://am.wordpress.org/plugins/incorrect-datetime-bug-plugin-fix/#developers)

 [ድጋፍ](https://wordpress.org/support/plugin/incorrect-datetime-bug-plugin-fix/)

## ማብራሪያ

This plugin was create to work around a problem caused by certain configurations
in MySQL that lead to several odd symptoms including but not limited to:

 * Loss of ability to create new posts
 * Loss of ability to update posts
 * Errors regarding invalid timestamps
 * Admin interface reverts to lowest permissions ex:‘Publish’ button says ‘Submit
   Draft’.

In addition, this problem is often accompanied by an error like the following:

    ```
    WordPress database error: [Incorrect datetime value: '0000-00-00 00:00:00' for column 'post_date_gmt' at row 1]
    INSERT INTO 'mg_posts' ('post_author','post_date','post_date_gmt','post_content','post_content_filtered','post_title',
    'post_excerpt','post_status','post_type','comment_status','ping_status','post_password','post_name','to_ping','pinged',
    'post_modified','post_modified_gmt','post_parent','menu_order','guid') VALUES (’1′,’2011-08-23 03:32:43′,
    ’0000-00-00 00:00:00′,”,”,’Auto Draft’,”,’auto-draft’,'post’,'closed’,'open’,”,”,”,”,’2011-08-23 03:32:43′,’0000-00-00 00:00:00′,’0′,’0′,”)
    ```

The inability to pass zero dates breaks the ability to actually create a new post,
but it also seems to have the odd secondary effect of confusing the heck out of 
nonces (noces are a security feature), probably because they too rely on timestamps.

This plugin strips out the sql_modes listed below from @@SESSION, thereby eliminating
the problem while only effecting database sessions WordPress starts and not the 
whole database.

### Explanation and history of the problem

The cause of this problem stems from an old (soon to be deprecated) odd behavior/
feature of MySQL which WordPress came to depend on. My understanding is that it 
stems from problems in MySQL with regard to using the MySQL NOW() function in some
contexts – so as a workaround it was decided that if a date of all zeros was entered
on a column that was set as NOT NULL, then that date would not be rejected, but 
instead would be converted to the current date – to mimic NOW().

Subsequently this method was marginalized as generally a bad idea – and now values
exist for a setting called sql_mode, which turn this behavior off and force errors
when a null value is passed to a NOT NULL field. In many cases when there is an 
actual DBA in charge of the database, they will assign these values to the production
database to force what outside of MySQL would be normal SQL behavior.

There are 3 sql_modes which will trigger the error by disabling the ability to enter
zero dates.

 * NO_ZERO_DATE
 * NO_ZERO_IN_DATE
 * TRADITIONAL

It’s worth mentioning that the ALLOW_INVALID_DATES mode does NOT solve the problem,
even though by the name of it, it would seem that it might.

### The solution

This plugin solves the problem with minimal effect to the database environment. 
All this plugin does it check to see if the sql_modes in question are set, and if
they are, it removes them.

Importantly, this plugin changes @@SESSION.sql_mode and not @@GLOBAL.sql_mode. By
changing sql_mode via the session, it only takes effect on each specific connections
WordPress makes with the database rather than changing it for the entire database
permanently – as such this will have no effect whatsoever on any applications that
might happen to be using the same database.

### Other manifestations, alternative solutions.

WARNING: Whenever applicable, consult your DBA before making any changes to production
databases.

This problem may (I have no idea) in fact be more common during installation. The
errors are different, and although I have seen them, I do not have them handy at
this time. In any case, if the sql_modes are set during installation – the process
will fail from the start – because of this, it is my presumption that anyone encountering
the errors as described above – has probably recently migrated to a new database,
or perhaps recently acquired an enthusiastic new DBA who has made some changes.

This plugin DOES NOT FIX this problem for those encountering during installation–
thats impossible because WordPress ignores all plugins during installation – so 
there is no way to hack around it via plugin and fix it before installation occurs.

If you are encountering this problem during installation you will need to find an
alternative way to remove the modes. If this is a production environment this may
require the cooperation of a DBA who may not like the idea. If met with resistance,
I suggest the asking for the modes to be temporarily removed for installation, and
then set back after its dont – at which point this plugin will handle the problem
from then on.

If your encountering this locally, or on a environment whose database you have access
to modify, you will want to make as few changes as possible, so go to whatever interface
you use (command line, phpMyAdmin, whatever) and run this line of SQL:

    ```
    SELECT @@GLOBAL.sql_mode;
    ```

This will show you all the sql modes currently defined. Copy all them them but if
you have NO_ZERO_DATE, NO_ZERO_IN_DATE, or TRADITIONAL remove them. Then update 
sql_mode with the remaining modes as such:

    ```
    SET @@GLOBAL.sql_mode = "STRICT_TRANS_TABLES,STRICT_ALL_TABLES,ERROR_FOR_DIVISION_BY_ZERO";
    ```

Please don’t simply use the sql_mode definition I have shown above, this is only
an example – be sure to use the modes from your database configuration. Remember
to keep everything together NO SPACES ALLOWED in the definition.

Finally, if your just working locally and don’t care about these sql_modes, you 
can just clear them all.

    ```
    SET @@GLOBAL.sql_mode = "";
    ```

This will do the trick but is absolutely not recommended as a fix for production
sites that might share environments.

Irrelevant Note: I struggled with naming this plugin, and settled on the terminology
seen in the error message.

## መጫን

 1. Upload `plugin-name.php` to the `/wp-content/plugins/` directory
 2. Activate the plugin through the ‘Plugins’ menu in WordPress

#### Will this fix sql_mode during installation?

No, plugins are not loaded during installation. For alternative solutions see
 “
Other manifestations, alternative solutions” on the plugin home page

#### Will this effect other applications that might run on the same database, and depend on these sql_mode settings?

No, it uses @@SESSION.sql_mode to change the settings for each WordPress session
individually.

#### How do I undo what this plugin does?

Just turn off the plugin – because it uses @@SESSION, the changes wont persist.

If you’ve made other modifications explained in this plugin’s documentation, you
will have to run similar SQL commands to apply the old settings.

## Reviews

There are no reviews for this plugin.

## Contributors & Developers

“Incorrect Datetime Bug Fix” is open source software. The following people have 
contributed to this plugin.

Contributors

 *   [ Eddie Moya ](https://profiles.wordpress.org/eddiemoya/)

[Translate “Incorrect Datetime Bug Fix” into your language.](https://translate.wordpress.org/projects/wp-plugins/incorrect-datetime-bug-plugin-fix)

### Interested in development?

[Browse the code](https://plugins.trac.wordpress.org/browser/incorrect-datetime-bug-plugin-fix/),
check out the [SVN repository](https://plugins.svn.wordpress.org/incorrect-datetime-bug-plugin-fix/),
or subscribe to the [development log](https://plugins.trac.wordpress.org/log/incorrect-datetime-bug-plugin-fix/)
by [RSS](https://plugins.trac.wordpress.org/log/incorrect-datetime-bug-plugin-fix/?limit=100&mode=stop_on_copy&format=rss).

## Changelog

#### 1.0

 * Initial plugin release

#### 1.1

 * Bug fix: Corrected the way the plugin used wpdb::prepare().

## Meta

 *  Version **1.1**
 *  Last updated **13 አመታት ago**
 *  Active installations **50+**
 *  Tested up to **3.2.1**
 *  Language
 * [English (US)](https://wordpress.org/plugins/incorrect-datetime-bug-plugin-fix/)
 * Tags
 * [mysql](https://am.wordpress.org/plugins/tags/mysql/)[sql](https://am.wordpress.org/plugins/tags/sql/)
 *  [Advanced View](https://am.wordpress.org/plugins/incorrect-datetime-bug-plugin-fix/advanced/)

## Ratings

 5 out of 5 stars.

 *  [  2 5-star reviews     ](https://wordpress.org/support/plugin/incorrect-datetime-bug-plugin-fix/reviews/?filter=5)
 *  [  0 4-star reviews     ](https://wordpress.org/support/plugin/incorrect-datetime-bug-plugin-fix/reviews/?filter=4)
 *  [  0 3-star reviews     ](https://wordpress.org/support/plugin/incorrect-datetime-bug-plugin-fix/reviews/?filter=3)
 *  [  0 2-star reviews     ](https://wordpress.org/support/plugin/incorrect-datetime-bug-plugin-fix/reviews/?filter=2)
 *  [  0 1-star reviews     ](https://wordpress.org/support/plugin/incorrect-datetime-bug-plugin-fix/reviews/?filter=1)

[Your review](https://wordpress.org/support/plugin/incorrect-datetime-bug-plugin-fix/reviews/#new-post)

[See all reviews](https://wordpress.org/support/plugin/incorrect-datetime-bug-plugin-fix/reviews/)

## Contributors

 *   [ Eddie Moya ](https://profiles.wordpress.org/eddiemoya/)

## ድጋፍ

Got something to say? Need help?

 [View support forum](https://wordpress.org/support/plugin/incorrect-datetime-bug-plugin-fix/)

## Donate

Would you like to support the advancement of this plugin?

 [ Donate to this plugin ](http://eddiemoya.com)