【问题标题】:How to generate DATE from 2 columns to use as selector in MySQL如何从 2 列生成 DATE 以用作 MySQL 中的选择器
【发布时间】:2023-04-08 06:19:01
【问题描述】:

我在一个表中分别有月份和年份列,分别命名为 my

现在我想选择记录,例如在 2016-082018-10 之间(日期并不重要,这就是我有月份和年份列的原因)

所以我正在寻找类似下面的命令但没有成功,是否有任何MySQL函数可以实现这一点?

SELECT * FROM mytable WHERE DATE(`y`,`m`) BETWEEN '2016-08-01' AND '2018-10-01'

【问题讨论】:

  • 我在一个表中分别有月份和年份列,分别命名为“m”和“y”。 ...您最好使用单个 DATE 数据类型,而不是需要连接的两列,除非使用生成的列,否则永远无法索引。..

标签: mysql date multiple-columns


【解决方案1】:

好的,我自己找到了解决方案。

我可以使用以下方法从两列中提取日期部分:

DATE(TIMESTAMP(CONCAT(`m`,'-',`y`,'-01')))

【讨论】:

    【解决方案2】:

    你可以的

    CAST(CONCAT(y, '-', LPAD(m,2,'0'), '-', '01') as DATE)
    

    即使用CONCAT 创建日期的字符串表示,YYYY-MM-DD,然后使用CAST 将字符串转换为日期。 LPAD 用于用前导 0 填充个位数月份。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-10-01
      • 2011-06-12
      • 2021-01-27
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多