【问题标题】:Select between two dates dateformat在两个日期之间选择日期格式
【发布时间】:2015-07-08 10:09:11
【问题描述】:

也许任何人都可以帮助我解决这个问题。我只想选择两个日期之间的所有行,但日期格式有问题。

我的查询:

SELECT id, number, date
FROM `table`
WHERE (STR_TO_DATE(date, '%j-%n-%Y') between '6-4-2015' AND '6-4-2016')

我不知道这个查询有什么问题。我尝试使用STR_TO_DATEDATE

日期的日期类型是文本(我想保留它)

这是一个数据库示例:

1     233        5-4-2015
2     238        6-4-2015
3     431        7-4-2015
4     230        8-4-2015

谁能帮帮我?

【问题讨论】:

  • 原始格式是什么?
  • 显示一些示例数据以及date的数据类型是什么

标签: mysql sql str-to-date


【解决方案1】:

您在 str_to_date 中进行了错误的日期转换,看起来日期是 d-m-Y 格式,而您正在做的是

mysql> select STR_TO_DATE('5-4-2015', '%j-%n-%Y') ;
+-------------------------------------+
| STR_TO_DATE('5-4-2015', '%j-%n-%Y') |
+-------------------------------------+
| NULL                                |
+-------------------------------------+

所以它给你 null 并且商店在那里结束。

你应该使用

mysql> select STR_TO_DATE('5-4-2015', '%d-%m-%Y') ;
+-------------------------------------+
| STR_TO_DATE('5-4-2015', '%d-%m-%Y') |
+-------------------------------------+
| 2015-04-05                          |
+-------------------------------------+
1 row in set (0.00 sec)

现在比较应该是这样的

WHERE 
STR_TO_DATE(date, '%d-%m-%Y') 
between 
STR_TO_DATE('6-4-2015','%d-%m-%Y') AND STR_TO_DATE('6-4-2015','%d-%m-%Y')

【讨论】:

    【解决方案2】:

    请试试这个strtotime函数

    '.date("d-m-Y", strtotime($r['date'])).'
    

    举例

     "select * from sales3 where (sdate between '.date("d-m-Y", strtotime($r['date1'])).' and '.date("d-m-Y", strtotime($r['date2'])).')"
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-03-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-12-26
      • 1970-01-01
      • 2011-11-03
      • 1970-01-01
      相关资源
      最近更新 更多