diff --git a/core/modules/datetime/datetime.services.yml b/core/modules/datetime/datetime.services.yml
new file mode 100644
index 0000000..74f0b0a
--- /dev/null
+++ b/core/modules/datetime/datetime.services.yml
@@ -0,0 +1,8 @@
+services:
+  datetime.date_field:
+    class: Drupal\datetime\GenericDateField
+    arguments: []
+    tags:
+       - { name: backend_overridable }
+  mysql.datetime.date_field:
+    class: Drupal\datetime\MySQLDateField
diff --git a/core/modules/datetime/src/DateFieldInterface.php b/core/modules/datetime/src/DateFieldInterface.php
new file mode 100644
index 0000000..ced0a7f
--- /dev/null
+++ b/core/modules/datetime/src/DateFieldInterface.php
@@ -0,0 +1,24 @@
+<?php
+/**
+ * @file
+ * Contains \Drupal\datetime\DateFieldInterface.
+ */
+
+namespace Drupal\datetime;
+use Drupal\datetime\Plugin\views\Argument\Date;
+
+/**
+ * Defines an interface for date field operations for the datetime module.
+ */
+interface DateFieldInterface {
+
+  /**
+   * Create date field string to be used in queries.
+   *
+   * @param \Drupal\datetime\Plugin\views\Argument\Date $date
+   *
+   * @return string
+   *  The query field that will be used in the expression in \Drupal\views\Plugin\views\query\QueryPluginBase::getDateField.
+   */
+  public function getDateField(Date $date);
+}
diff --git a/core/modules/datetime/src/GenericDateField.php b/core/modules/datetime/src/GenericDateField.php
new file mode 100644
index 0000000..c8d12b7
--- /dev/null
+++ b/core/modules/datetime/src/GenericDateField.php
@@ -0,0 +1,23 @@
+<?php
+/**
+ * @file
+ * Contains \Drupal\datetime\GenericDateField.
+ */
+
+namespace Drupal\datetime;
+use Drupal\datetime\Plugin\views\Argument\Date;
+
+
+/**
+ * Default date field implementation.
+ */
+class GenericDateField implements DateFieldInterface {
+
+  /**
+   * {@inheritdoc}
+   */
+  public function getDateField(Date $date) {
+    return "$date->tableAlias.$date->realField";
+  }
+
+}
diff --git a/core/modules/datetime/src/MySQLDateField.php b/core/modules/datetime/src/MySQLDateField.php
new file mode 100644
index 0000000..30fa389
--- /dev/null
+++ b/core/modules/datetime/src/MySQLDateField.php
@@ -0,0 +1,25 @@
+<?php
+/**
+ * @file
+ * Contains \Drupal\datetime\MySQLDateField.
+ */
+
+
+namespace Drupal\datetime;
+
+
+use Drupal\datetime\Plugin\views\Argument\Date;
+
+/**
+ * MySQL date field implementation.
+ */
+class MySQLDateField implements DateFieldInterface {
+
+  /**
+   * {@inheritdoc}
+   */
+  public function getDateField(Date $date) {
+    // Convert date string to timestamp so that Views timezone offset logic will work.
+    return $date->query->getDateField(" UNIX_TIMESTAMP( {$date->tableAlias}.{$date->realField}) ");
+  }
+}
diff --git a/core/modules/datetime/src/Plugin/views/argument/Date.php b/core/modules/datetime/src/Plugin/views/argument/Date.php
index 7bd5cdf..2935390 100644
--- a/core/modules/datetime/src/Plugin/views/argument/Date.php
+++ b/core/modules/datetime/src/Plugin/views/argument/Date.php
@@ -7,7 +7,10 @@
 
 namespace Drupal\datetime\Plugin\views\Argument;
 
+use Drupal\Core\Routing\RouteMatchInterface;
+use Drupal\datetime\DateFieldInterface;
 use Drupal\views\Plugin\views\argument\Date as NumericDate;
+use Symfony\Component\DependencyInjection\ContainerInterface;
 
 /**
  * Abstract argument handler for dates.
@@ -27,12 +30,47 @@
  */
 class Date extends NumericDate {
 
+  /** @var \Drupal\datetime\DateFieldInterface  */
+  protected $dateField;
+
+  /**
+   * Constructs a new Date instance.
+   *
+   * @param array $configuration
+   *   A configuration array containing information about the plugin instance.
+   * @param string $plugin_id
+   *   The plugin_id for the plugin instance.
+   * @param mixed $plugin_definition
+   *   The plugin implementation definition.
+   *
+   * @param \Drupal\Core\Routing\RouteMatchInterface $route_match
+   *   The route match.
+   * @param \Drupal\datetime\DateFieldInterface $date_field
+   *   The date field service.
+   */
+  public function __construct(array $configuration, $plugin_id, $plugin_definition, RouteMatchInterface $route_match, DateFieldInterface $date_field) {
+    parent::__construct($configuration, $plugin_id, $plugin_definition, $this->routeMatch = $route_match);
+    $this->dateField = $date_field;
+  }
+
+  /**
+   * {@inheritdoc}
+   */
+  public static function create(ContainerInterface $container, array $configuration, $plugin_id, $plugin_definition) {
+    return new static(
+      $configuration,
+      $plugin_id,
+      $plugin_definition,
+      $container->get('current_route_match'),
+      $container->get('datetime.date_field')
+    );
+  }
+
   /**
    * {@inheritdoc}
    */
   public function getDateField() {
-    // Return the real field, since it is already in string format.
-    return "$this->tableAlias.$this->realField";
+    return $this->dateField->getDateField($this);
   }
 
   /**
