MySQL使用%m返回的月份不同于%M

时间:2016-03-04 15:21:58

标签: mysql datetime

CentOS 6.7 MySQL 5.1.73

我有一个归档表,其中有一个名为int a,b,c; int main() { a=1; b=2; c=3; scanf("%d",a); } 的列,它只是每条记录的unix时期。

我正在尝试使用以下查询提取月份名称和月份编号。但是, # size a.out text data bss dec hex filename 1318 284 16 1618 652 a.out # size core.18521 text data bss dec hex filename 28672 180224 0 208896 33000 core.18521 (core file invoked as ./a.out) 是正确的,但dateTime不是。

正确的结果应为%M%m。但是March正在返回12.

03

为什么%m会返回12?

修改:这是一个有趣的。使用mysql> SELECT max( dateTime ) FROM archive; +-----------------+ | max( dateTime ) | +-----------------+ | 1457104500 | +-----------------+ 1 row in set (0.00 sec) mysql> SELECT max( FROM_UNIXTIME(dateTime,"%M") ) as 'date' FROM archive; +-------+ | date | +-------+ | March | +-------+ 1 row in set (0.02 sec) mysql> SELECT max( FROM_UNIXTIME(dateTime,"%m") ) as 'date' FROM archive; +------+ | date | +------+ | 12 | +------+ 1 row in set (0.02 sec) 会产生与%m

不同的结果
%m %M

1 个答案:

答案 0 :(得分:1)

您选择已由max转换的结果的FROM_UNIXTIME值:

12是最大的数字结果,March是对月份名称进行排序时的“最大”字母数字结果。

我假设您想要最大的结果并在之后进行转换:

FROM_UNIXTIME(MAX(dateTime),"%M")

FROM_UNIXTIME(MAX(dateTime),"%m")

是你想要的