【问题标题】:extract month from mysql从mysql中提取月份
【发布时间】:2013-07-25 12:27:54
【问题描述】:

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

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

但是,如果我将日期格式更改为 yyyy-mm-dd 它可以工作,但这不是一个选项。

【问题讨论】:

  • 为什么不能选择呢? o_o
  • 如果我说这不是一个选项,那不是一个简单的选项。只有在数据写入后,我们才控制数据流入数据库。

标签: mysql date


【解决方案1】:

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

select month(str_to_date('25/07/2013', '%d/%m/%Y'));

【讨论】:

  • 这似乎比@spencer7593 的建议更安全,因为您明确定义了日期格式。
  • 我可以把它加入到我当前的查询中吗? “从 tbldata 中选择目标站点 = $site”; ?
  • 您可以将它包含在任何查询中,但我看不出它如何适合您引用的特定查询。您要从中提取月份的日期在哪里?
【解决方案2】:

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

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。该表达式的返回值可用作任何接受 DATE 参数的 MySQL 函数的参数,例如示例问题中的 MONTH() 函数。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-11-15
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多