C# 选择筛选器查询中的日期格式

C# 选择筛选器查询中的日期格式,c#,mysql,select,date-format,C#,Mysql,Select,Date Format,我有一个字段日期类型。我正在以dd/mm/yyyy格式记录数据。 它显示得很好。但当我尝试在select查询中使用过滤器时,它会返回每一行。我试过这个: SELECT * FROM MyTable WHERE dt_start >= '01/04/2007' 及 现在,如果我试试这个,它的效果非常好: SELECT * FROM MyTable WHERE dt_start >= '2007/04/01' 我知道这是网站上的标准MySQL日期格式。但我想知道一个实现这个目

我有一个字段日期类型。我正在以dd/mm/yyyy格式记录数据。
它显示得很好。但当我尝试在select查询中使用过滤器时,它会返回每一行。我试过这个:

SELECT *
FROM MyTable
WHERE dt_start >=  '01/04/2007'

现在,如果我试试这个,它的效果非常好:

SELECT *
FROM MyTable
WHERE dt_start >=  '2007/04/01'  

我知道这是网站上的标准MySQL日期格式。但我想知道一个实现这个目标的方法

这与进行比较时日期和字符串之间的转换有关。您可以将所需的常数设置为:

SELECT *
FROM MyTable
WHERE dt_start >=  STR_TO_DATE('01/04/2007', '%d/%m/%yyyy')  ;

但是,我强烈建议您在查询中使用ISO标准日期格式。这是YYYY-MM-DD。您可以输出您喜欢的任何格式,但在查询中使用标准是一个好主意。

要转换日期的语法如下所示:

UPDATE [table name] SET [date field name] = STR_TO_DATE('01/04/2007', '%Y-%m-%d')
这将把我们所有的日期转换成戈登·林诺夫所说的标准。如果您想让它们在取出时看起来像您的日期,则可以在查询中使用dateformat:

SELECT DATE_FORMAT([date field], '%m/%d/%Y') AS myDate FROM [table name]
这有意义吗? 我也同意Gordon的观点,用标准格式存储日期更容易。通过这种方式,您可以更轻松地操纵和比较日期

编辑

SELECT * FROM [your table] WHERE date >= STR_TO_DATE('01/04/2007', '%m/%d/%Y')

这样,您就不必更改日期类型,只需将要计算的字符串更改为where子句中的日期即可。这就是您想要的吗?

您的代码:FUNCTION DataBaseName.STR2DATE不存在它的名称为
STR\u TO\u DATE
@Barmar。谢谢。好的,但它是以我希望的格式录制的,dd/mm/yyyy。当我执行select查询时,返回的日期格式也是完美的。。。我面临的唯一问题是,当我试图用不同的这种格式从数据库中过滤数据时;我刚刚找到了一种改变代码隐藏格式的方法,我想我会用它;索克,我想我误解了你的问题。我更新了我的答案,在where子句中使用STR_to_DATE@PlayHardGoPro
SELECT * FROM [your table] WHERE date >= STR_TO_DATE('01/04/2007', '%m/%d/%Y')