【问题标题】:In my query MYSQL CAST not working在我的查询中 MYSQL CAST 不起作用
【发布时间】:2017-10-26 10:53:21
【问题描述】:

我不知道我的 MYSQL 查询出了什么问题:

SELECT * FROM package_customers pc 
left join installations ins on ins.package_customer_id = pc.id 
WHERE pc.status = 'scheduled' 
AND CAST(ins.schedule_date as DATE) >='10-27-2017'

这些字段是:

  1. 状态数据类型枚举

  2. schedule_date 数据类型 varchar

schedule_date列中,数据是这样的:10-27-2017 12AM 12PM

我正在尝试查找按日期计算的数据。

【问题讨论】:

  • 您的问题是什么?这个查询提供了什么结果?这和你想要的有什么不同?
  • 在我的数据库字段 schedule_date 有 10-27-2017 12AM 12PM 和状态字段已安排但当我运行此查询消息是:MySQL 返回一个空的结果集(即零行)。 (查询耗时 0.0242 秒)
  • 不要将重要信息放入 cmets;它们应该被认为是短暂的。相反,edit 您的问题包含读者需要理解的所有相关信息。

标签: mysql enums casting


【解决方案1】:

如果源数据格式可接受,cast 函数可以工作。
有一些条件可以验证date and time 格式。
您的 schedule_date 列值与它们不匹配。因此,cast 失败了。
请阅读documentation on Date and Time Types

您应该考虑重新设计表格以包含具有datetime 数据类型的schedule_startschedule_end 列。 MySQL 有各种date and time functions 来处理这些数据字段。

目前,您的 varchar 日期数据可以通过以下方式处理。

mysql> SELECT @dt_string:='10-27-2017 12AM  12PM' AS dt_string
    ->      , @dtime:=STR_TO_DATE( @dt, '%m-%d-%Y %h%p %h%p' ) AS date_time
    ->      , DATE( @dtime ) AS my_date;
+-----------------------+---------------------+------------+
| dt_string             | date_time           | my_date    |
+-----------------------+---------------------+------------+
| 10-27-2017 12AM  12PM | 2017-10-27 12:00:00 | 2017-10-27 |
+-----------------------+---------------------+------------+
1 row in set (0.00 sec)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-11-18
    • 2012-04-08
    • 1970-01-01
    • 2013-05-07
    • 2014-09-27
    • 1970-01-01
    相关资源
    最近更新 更多