2

如何在 mysql 中使用 sql 查询提取月份。日期格式如下:dd/mm/yyyy。

MONTH(datecol) = $month // this does not work.

但是,如果我将日期格式更改为yyyy-mm-dd有效,但这不是一个选项。

4

2 回答 2

4

您可以使用 将任何格式的日期解析为 SQL 日期值str_to_date。例如:

select month(str_to_date('25/07/2013', '%d/%m/%Y'));
于 2013-07-25T12:36:34.567 回答
3

此表达式将提取出现在第一个和第二个正斜杠之间的字符串部分。

SUBSTRING_INDEX(SUBSTRING_INDEX( '25/07/2013' ,'/',2),'/',-1) 

将返回'07'

要将其转换为数字,请向其添加零,

SUBSTRING_INDEX(SUBSTRING_INDEX( '25/07/2013' ,'/',2),'/',-1) + 0 

将返回一个数值7


笔记

此表达式适用于任何字符串值,而不仅仅是表示指定格式的有效日期的字符串。例如:

SUBSTRING_INDEX(SUBSTRING_INDEX( 'dd/mm/yyyy' ,'/',2),'/',-1)

将返回'mm'

如果在字符串中只找到一个斜杠,这将返回斜杠后面的部分。如果在字符串中没有找到斜杠,这将返回整个字符串。

如果您的意图是验证字符串是否代表指定格式的有效日期值,则该STR_TO_DATE()函数可用于将字符串转换为DATE. 该表达式的返回值可用作任何接受参数的 MySQL 函数的DATE参数,例如MONTH()示例问题中的函数。

于 2013-07-25T12:32:34.030 回答