我有一个包含不同日期的表,其中一个日期被分成3个字段: PassDay、PassMonth、PassYear。
我想将这些日期与另一个datetime orig_date进行比较,所以我所做的是
select `orig_date`, CONCAT_WS('-',`PassYear`,`PassMonth`,`PassDay`) as `pass_expiration` where `pass_expiration` < `orig_date`;问题是月份被存储为一个月份名称(一月),而不是一个数字(01),因此我对pass_expiration的结果是2013-4月15日。
有没有办法直接从查询中把这个(2013-4-15)转换成一个常规的日期时间?
发布于 2012-01-07 06:26:18
你想要str_to_date
where STR_TO_DATE(CONCAT_WS('-',PassYear,PassMonth,PassDay),'%Y-%M-%d') < orig_date另外,需要注意的是,不能在where子句中引用计算列。仅在order by子句中(where是用于从表中筛选结果的谓词;order by在计算列集之后运行)。
https://stackoverflow.com/questions/8765243
复制相似问题