diff --git a/src/Umbraco.Core/DateTimeExtensions.cs b/src/Umbraco.Core/DateTimeExtensions.cs
new file mode 100644
index 0000000000..74460814b3
--- /dev/null
+++ b/src/Umbraco.Core/DateTimeExtensions.cs
@@ -0,0 +1,22 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+
+namespace Umbraco.Core
+{
+ public static class DateTimeExtensions
+ {
+
+ ///
+ /// Returns the DateTime as an ISO formatted string that is globally expectable
+ ///
+ ///
+ ///
+ public static string ToIsoString(this DateTime dt)
+ {
+ return dt.ToString("yyyy-MM-dd HH:mm:ss");
+ }
+
+ }
+}
diff --git a/src/Umbraco.Core/Persistence/Querying/ModelToSqlExpressionHelper.cs b/src/Umbraco.Core/Persistence/Querying/ModelToSqlExpressionHelper.cs
index 7a65fe33bc..470a098fd8 100644
--- a/src/Umbraco.Core/Persistence/Querying/ModelToSqlExpressionHelper.cs
+++ b/src/Umbraco.Core/Persistence/Querying/ModelToSqlExpressionHelper.cs
@@ -455,8 +455,11 @@ namespace Umbraco.Core.Persistence.Querying
if (fieldType == typeof(decimal))
return ((decimal)value).ToString(CultureInfo.InvariantCulture);
- if (fieldType == typeof(DateTime))
- return "'" + EscapeParam(((DateTime)value).ToString(CultureInfo.InvariantCulture)) + "'";
+ if (fieldType == typeof (DateTime))
+ {
+ return "'" + EscapeParam(((DateTime)value).ToIsoString()) + "'";
+ }
+
if (fieldType == typeof(bool))
return ((bool)value) ? Convert.ToString(1, CultureInfo.InvariantCulture) : Convert.ToString(0, CultureInfo.InvariantCulture);
diff --git a/src/Umbraco.Core/Persistence/Querying/PocoToSqlExpressionHelper.cs b/src/Umbraco.Core/Persistence/Querying/PocoToSqlExpressionHelper.cs
index 456607a348..d065849102 100644
--- a/src/Umbraco.Core/Persistence/Querying/PocoToSqlExpressionHelper.cs
+++ b/src/Umbraco.Core/Persistence/Querying/PocoToSqlExpressionHelper.cs
@@ -465,8 +465,11 @@ namespace Umbraco.Core.Persistence.Querying
if (fieldType == typeof(decimal))
return ((decimal)value).ToString(CultureInfo.InvariantCulture);
- if(fieldType == typeof(DateTime))
- return "'" + EscapeParam(((DateTime)value).ToString(CultureInfo.InvariantCulture)) + "'";
+ if (fieldType == typeof (DateTime))
+ {
+ return "'" + EscapeParam(((DateTime)value).ToIsoString()) + "'";
+ }
+
if (fieldType == typeof(bool))
return ((bool)value) ? Convert.ToString(1, CultureInfo.InvariantCulture) : Convert.ToString(0, CultureInfo.InvariantCulture);
diff --git a/src/Umbraco.Core/Umbraco.Core.csproj b/src/Umbraco.Core/Umbraco.Core.csproj
index ccc361e3f7..1c8fff3334 100644
--- a/src/Umbraco.Core/Umbraco.Core.csproj
+++ b/src/Umbraco.Core/Umbraco.Core.csproj
@@ -140,6 +140,7 @@
+
diff --git a/src/Umbraco.Tests/Persistence/Querying/QueryBuilderTests.cs b/src/Umbraco.Tests/Persistence/Querying/QueryBuilderTests.cs
index 5823970874..25fc2c3d35 100644
--- a/src/Umbraco.Tests/Persistence/Querying/QueryBuilderTests.cs
+++ b/src/Umbraco.Tests/Persistence/Querying/QueryBuilderTests.cs
@@ -12,6 +12,22 @@ namespace Umbraco.Tests.Persistence.Querying
[TestFixture]
public class QueryBuilderTests : BaseUsingSqlCeSyntax
{
+ [Test]
+ public void Dates_Formatted_Properly()
+ {
+ var sql = new Sql();
+ sql.Select("*").From();
+
+ var dt = new DateTime(2013, 11, 21, 13, 25, 55);
+
+ var query = Query.Builder.Where(x => x.ExpireDate <= dt);
+ var translator = new SqlTranslator(sql, query);
+
+ var result = translator.Translate();
+
+ Assert.IsTrue(result.SQL.Contains("[expireDate] <= '2013-11-21 13:25:55'"));
+ }
+
[Test]
public void Can_Build_StartsWith_Query_For_IContent()
{