从MySQL中的字符串中提取日期

从MySQL中的字符串中提取日期,mysql,string,substring,Mysql,String,Substring,我有如下格式的字符串数据列: Katy Perry Tickets - Staples Center. 09/19/2014 7:30 PM. 209 11 Atlanta Braves Tickets vs Miami Marlins Tickets - Turner Field. 08/31/2014 5:10 PM. 411L 2 我需要从每个字段中提取日期值,常见的格式是从右边看第一个句号,直到下一个句号。日期总是介于两者之间 日期左边的文本中偶尔会出现句号,所以我们不能相信这一点

我有如下格式的字符串数据列:

Katy Perry Tickets - Staples Center. 09/19/2014 7:30 PM. 209 11

Atlanta Braves Tickets vs Miami Marlins Tickets - Turner Field. 08/31/2014 5:10 PM. 411L 2
我需要从每个字段中提取日期值,常见的格式是从右边看第一个句号,直到下一个句号。日期总是介于两者之间

日期左边的文本中偶尔会出现句号,所以我们不能相信这一点

我怎样才能得到那个特殊的子字符串?SQL专家,需要你的建议


谢谢。

尝试使用
子字符串\u索引

Select  Substring_Index(Substring_Index( txt, ".",  -2), ".", 1)
From    Tablename

尝试使用
子字符串\u索引

Select  Substring_Index(Substring_Index( txt, ".",  -2), ".", 1)
From    Tablename
您可以使用,我已经安装了UDF函数,我得到以下信息:

1-创建和插入样本数据:

create table your_table (
    txt_col text
);

insert into your_table values  
('Katy Perry Tickets - Staples Center. 09/19/2014 7:30 PM. 209 11'),
('Atlanta Braves Tickets vs Miami Marlins Tickets - Turner Field. 08/31/2014 5:10 PM. 411L 2');
2-使用日期模式测试
PREG_CAPTURE
功能:

mysql> SELECT PREG_CAPTURE(
           '/([0-9]+\\/[0-9]+\\/[0-9]+)\\s[0-9]+:[0-9]+\\s[a-z]+/i' , 
           txt_col, 0  ) as date_captured, 
    txt_col from your_table;
+--------------------+--------------------------------------------------------------------------------------------+
| date_captured      | txt_col                                                                                    |
+--------------------+--------------------------------------------------------------------------------------------+
| 09/19/2014 7:30 PM | Katy Perry Tickets - Staples Center. 09/19/2014 7:30 PM. 209 11                            |
| 08/31/2014 5:10 PM | Atlanta Braves Tickets vs Miami Marlins Tickets - Turner Field. 08/31/2014 5:10 PM. 411L 2 |
+--------------------+--------------------------------------------------------------------------------------------+
2 rows in set (0.00 sec)
date\u captured
列是提取的文本。

您可以使用,我已经安装了UDF函数,我得到以下信息:

1-创建和插入样本数据:

create table your_table (
    txt_col text
);

insert into your_table values  
('Katy Perry Tickets - Staples Center. 09/19/2014 7:30 PM. 209 11'),
('Atlanta Braves Tickets vs Miami Marlins Tickets - Turner Field. 08/31/2014 5:10 PM. 411L 2');
2-使用日期模式测试
PREG_CAPTURE
功能:

mysql> SELECT PREG_CAPTURE(
           '/([0-9]+\\/[0-9]+\\/[0-9]+)\\s[0-9]+:[0-9]+\\s[a-z]+/i' , 
           txt_col, 0  ) as date_captured, 
    txt_col from your_table;
+--------------------+--------------------------------------------------------------------------------------------+
| date_captured      | txt_col                                                                                    |
+--------------------+--------------------------------------------------------------------------------------------+
| 09/19/2014 7:30 PM | Katy Perry Tickets - Staples Center. 09/19/2014 7:30 PM. 209 11                            |
| 08/31/2014 5:10 PM | Atlanta Braves Tickets vs Miami Marlins Tickets - Turner Field. 08/31/2014 5:10 PM. 411L 2 |
+--------------------+--------------------------------------------------------------------------------------------+
2 rows in set (0.00 sec)

date\u captured
列是提取的文本。

不要在mysql中这样做。mysql正则表达式只能进行匹配。他们做不到捕捉。您被困在基本的字符串操作中,即使是在sql中,这些操作也会非常痛苦。使用正则表达式只提取其中包含日期的记录,然后使用客户端代码进行实际提取。您是否尝试过SUBSTR(读取SUBSTRING)函数?你尝试过什么?下面的Cheruvian已经使用子字符串索引得到了完美的解决方案。不要在mysql中这样做。mysql正则表达式只能进行匹配。他们做不到捕捉。您被困在基本的字符串操作中,即使是在sql中,这些操作也会非常痛苦。使用正则表达式只提取其中包含日期的记录,然后使用客户端代码进行实际提取。您是否尝试过SUBSTR(读取SUBSTRING)函数?你尝试过什么?下面的Cheruvian使用子串索引得到了完美的解决方案。