无论文化如何,强制日期格式
Force date format regardless of culture
我对某些文化(尤其是西班牙语)有疑问,导致日期字符串 ToShortDateString() 以 dd/mm/yyyy
的形式出现
where END_DATE between '" + asOfDate.AddDays(-30).ToShortDateString() + "' and '" +
这导致 SQL 服务器错误,因为我们得到了不正确的日期文字字符串,例如:
where END_DATE between '17/05/2015' and '16/06/2015'
在我构建 SQL 语句的这些情况下,将日期格式强制为 mm/dd/yyyy 的最佳方法是什么?
答案是,如果您要使用 any 格式,请确保它是 ISO 类型的格式,例如 yyyy-MM-dd
.
where END_DATE between '" + asOfDate.AddDays(-30).ToString("yyyy-MM-dd") + "' and
然而,更重要的一点是使用参数化查询,而不是字符串连接。当您这样做时,日期就是日期,格式无关紧要。
您可以使用:
asOfDate.AddDays(-30).ToString("MM/dd/yyyy", System.Globalization.CultureInfo.InvariantCulture)
(注意大写MM)
我对某些文化(尤其是西班牙语)有疑问,导致日期字符串 ToShortDateString() 以 dd/mm/yyyy
的形式出现where END_DATE between '" + asOfDate.AddDays(-30).ToShortDateString() + "' and '" +
这导致 SQL 服务器错误,因为我们得到了不正确的日期文字字符串,例如:
where END_DATE between '17/05/2015' and '16/06/2015'
在我构建 SQL 语句的这些情况下,将日期格式强制为 mm/dd/yyyy 的最佳方法是什么?
答案是,如果您要使用 any 格式,请确保它是 ISO 类型的格式,例如 yyyy-MM-dd
.
where END_DATE between '" + asOfDate.AddDays(-30).ToString("yyyy-MM-dd") + "' and
然而,更重要的一点是使用参数化查询,而不是字符串连接。当您这样做时,日期就是日期,格式无关紧要。
您可以使用:
asOfDate.AddDays(-30).ToString("MM/dd/yyyy", System.Globalization.CultureInfo.InvariantCulture)
(注意大写MM)