Don*_*ono 20 mysql date date-format
我用谷歌搜索并尝试了几种比较日期的方法,但不幸的是没有得到预期的结果.我有如下记录的当前状态:
mysql> select date_format(date(starttime),'%d-%m-%Y') from data;
+-----------------------------------------+
| date_format(date(starttime),'%d-%m-%Y') |
+-----------------------------------------+
| 28-10-2012 |
| 02-11-2012 |
| 02-11-2012 |
| 02-11-2012 |
| 03-11-2012 |
| 03-11-2012 |
| 07-11-2012 |
| 07-11-2012 |
Run Code Online (Sandbox Code Playgroud)
我想比较日期,因此这样做:
mysql> select date_format(date(starttime),'%d-%m-%Y') from data where date_format(date(starttime),'%d-%m-%y') >= '02-11-2012';
+-----------------------------------------+
| date_format(date(starttime),'%d-%m-%Y') |
+-----------------------------------------+
| 28-10-2012 |
| 02-11-2012 |
| 02-11-2012 |
| 02-11-2012 |
| 03-11-2012 |
| 03-11-2012 |
| 07-11-2012 |
| 07-11-2012 |
Run Code Online (Sandbox Code Playgroud)
我相信结果不应该包括'28 -10-2012'.有什么建议吗?提前致谢.
Jon*_*eet 39
您的格式根本不是什么排序一个开始-你是比较字符串,字符串"28-10-2012" 是不是"2012年2月11日"更大.
相反,您应该将日期作为日期进行比较,然后仅将它们转换为输出的目标格式.
试试这个:
select date_format(date(starttime),'%d-%m-%Y') from data
where date(starttime) >= date '2012-11-02';
Run Code Online (Sandbox Code Playgroud)
(根据文档,输入必须始终采用年 - 月 - 值形式.)
请注意,如果starttime是DATETIME字段,您可能需要考虑更改查询以避免重复转换.(优化器可能足够聪明以避免它,但值得检查.)
select date_format(date(starttime),'%d-%m-%Y') from data
where starttime >= '2012-11-02 00:00:00';
Run Code Online (Sandbox Code Playgroud)
(请注意,将日期格式化为d-m-Y开头是不常见的- y-M-d一般情况下使用最好是ISO-8601标准等.但是,上面的代码执行了您在问题中要求的内容.)
| 归档时间: |
|
| 查看次数: |
77921 次 |
| 最近记录: |