我已将日期保存为字符串,例如:Fri Apr 04 15:58:43 BST 2014
年份总是在最后,我想查询以获取年份少于特定年份的记录,说2012年。这可能吗?怎么样?是否有可能解决这个问题从MySQL?即将字符串中的日期转换为日期?如何从字符串中提取日期
回答
这里是基线查询
SELECT REVERSE(LEFT(REVERSE('Fri Apr 04 15:58:43 BST 2014'),4));
这是执行
OMG我在想什么???我其实是对其进行解码
SET @datestring = 'Fri Apr 04 15:58:43 BST 2014';
SELECT CONCAT(YYYY,'-',MM,'-',DD,' ',HHMMSS) dt FROM
(SELECT REVERSE(LEFT(REVERSE(@datestring),4)) as YYYY,
SUBSTR(FLOOR((LOCATE(LEFT(SUBSTR(@datestring,5),3),'JanFebMarAprMayJunJulAugSepOctNovDec')+2)/3)+100,2) MM,
SUBSTR(@datestring,9,2) DD,
SUBSTR(@datestring,12,8) HHMMSS) A;
和我的解码工作
mysql> SET @datestring = 'Fri Apr 04 15:58:43 BST 2014';
Query OK, 0 rows affected (0.00 sec)
mysql> SELECT CONCAT(YYYY,'-',MM,'-',DD,' ',HHMMSS) dt FROM
-> (SELECT REVERSE(LEFT(REVERSE(@datestring),4)) as YYYY,
-> SUBSTR(FLOOR((LOCATE(LEFT(SUBSTR(@datestring,5),3),'JanFebMarAprMayJunJulAugSepOctNovDec')+2)/3)+100,2) MM,
-> SUBSTR(@datestring,9,2) DD,
-> SUBSTR(@datestring,12,8) HHMMSS) A
-> ;
+---------------------+
| dt |
+---------------------+
| 2014-04-04 15:58:43 |
+---------------------+
1 row in set (0.00 sec)
mysql>
您可以使用MySQL STR_TO_DATE()
功能,这些值到MySQL日期转换:
mysql> select str_to_date('Fri Apr 04 15:58:43 BST 2014','%a %b %d %H:%i:%S BST %Y');
+------------------------------------------------------------------------+
| str_to_date('Fri Apr 04 15:58:43 BST 2014','%a %b %d %H:%i:%S BST %Y') |
+------------------------------------------------------------------------+
| 2014-04-04 15:58:43 |
+------------------------------------------------------------------------+
1 row in set (0.00 sec)
下面是使用一个粗略的例子您的样本串说明的查询与2012年前将需要进行全表扫描日期返回所有行,所以它不会那么快,但它说明了基本conce pt你需要做什么:
select *
from your_table
where str_to_date(your_column,'%a %b %d %H:%i:%S BST %Y') < '2012-01-01'
这里是一个大胖子+1为了简单,因为我只是当我写我的回答没有思考过。 – RolandoMySQLDBA 2012-07-24 21:48:30
我可以更改列内的值吗?我需要永久解决这个问题。 – 2012-07-27 14:49:03
您应该添加一个新的可空DATE列,利用现有的字符串值设置新列的值,那么一旦你不使用它的任何更多的选择性删除字符串列。 – 2012-08-06 14:23:21
- 1. 从字符串中提取日期值
- 2. 从字符串中提取日期
- 3. 从字符串提取日期(URL)
- 4. SQL:从字符串提取日期
- 5. 从字符串提取日期
- 6. 从日期提取时间字符串
- 7. 从大字符串提取日期
- 8. 如何从SQL中的字符串提取日期?
- 9. 我如何从字符串中提取日期使用php
- 10. 如何从日期字符串中提取YYYY-mm-dd?
- 11. 如何从PHP中的日期对象中提取日期字符串
- 12. 如何从一个varchar字符串提取日期
- 13. 从r中给出的字符串中提取日期
- 14. 从PHP中的字符串中提取日期
- 15. 从python中的字符串中提取日期
- 16. 从bash中的字符串中提取日期和时间
- 17. 启发式(模糊)从字符串中提取日期?
- 18. Python模块从字符串中提取可能的日期?
- 19. 使用JavaScript从字符串中提取日期和时间
- 20. 从各种格式的字符串中提取日期
- 21. 从字符串中提取格式不一致的日期(日期解析,NLP)
- 22. 当日期值后面有额外值时从字符串中提取日期
- 23. 如何从字符串中提取值
- 24. 如何从字符串中提取值
- 25. 如何从字符串中提取?
- 26. 如何从字符串中提取值
- 27. 如何从Python中的字符串中提取子字符串?
- 28. 如何在ColdFusion中从字符串中提取子字符串?
- 29. 如何从Perl中的字符串中提取子字符串?
- 30. 如何从java中的字符串中提取子字符串
谁高举我,谢谢!!! @IkeWalker有更好的答案:http://stackoverflow.com/a/11639700/491757 – RolandoMySQLDBA 2012-07-24 21:49:36