df-drills pandas · Polars · DuckDB SQL · DuckDB Relational 题目列表 登录

解析日期字符串

中等 06-cast 类型转换 castdateparsecoerce

raw_customers.birthday 是字符串,混用了两种日期写法。把它解析成日期类型:

  • YYYY-MM-DD,例如 2003-04-21;
  • DD/MM/YYYY,日在前、月在后,例如 01/02/1994 是 1994 年 2 月 1 日。

其余情况一律为 null,包括: - 其他写法(如 1990.3.5、3-5-1990、2020/01/02、unknown、-、N/A、空字符串); - 格式对但日期不存在的(如 31/04/1999、2023-02-29、12/13/2020); - 原本就是 null 的。

数据保证日期字符串前后没有空白,年份都是 4 位。

输入

  • raw_customers(id, full_name, email, phone, birthday, signup, vip, spend),所有列都是字符串。

输出

列为 id, birthday(birthday 为日期),行数与输入相同(id 可能重复,照常输出),行顺序不限。

输入表 (case base,共 2 个 case:base、edge)

raw_customers messy/raw_customers
#idstringfull_namestringemailstringphonestringbirthdaystringsignupstringvipstringspendstring
1 1 xu ming xu.ming60@mail.cn +86 189 3287 9217 - 2025-02-12 YES 3428
2 2 yang guo yang.guo68@example.com 10033907579 2003-04-21 05/01/2025 n 2,132.69
3 3 guo jing guo.jing91@mail.cn 15384019161 01/02/1994 2025-01-01 Y 3716.67
4 4 zhou jie zhou.jie26@qq.com 14514506123 29/02/2000 01/07/2025 no 999.73
5 5 liu yang liu.yang51@mail.cn 13049403 31/04/1999 2025-09-22 0 2024
6 6 zhang san ZHANG.SAN@Example.COM 13095597297 06/07/1978 15/11/2025 no $1,200.50
7 7 null zhou.jie54@example.com (111) 08436469 2003.3.24 2025-08-22 N $4,809.60
8 8 BOB smith N/A 173-0024-5892 11/08/1978 2026-06-19 yes 4842.25
9 9 LI WEI li.wei40@example.com (109) 17145211 - 13/05/2025 0 3592.13
10 10 he ping he.ping54@example.com 179-0966-9091 14/05/1977 02/02/2026 n 4395.47
11 11 guo jing guo.jing4@mail.cn 19170317974 05/05/1993 2025-07-27 0 2,316.99
12 12 he ping he.ping86@mail.cn 136-3363-9532 1992-01-23 11/10/2025 N 1442.64
13 13 BOB smith bob.smith67@mail.cn 1971-11-05 2025-07-14 1 $738.58
14 14 WANG FANG wang.fang@@mail.com N/A 09/04/1981 07/07/2026 yes 4152.00
15 15 grace HOPPER grace.hopper93@mail.cn (127) 73068985 - 2025-05-07 YES 1624
16 16 guo jing guo.jing34@qq.com (105) 81075864 2025-02-05 0 4,802.51
17 17 LIU YANG liu.yang93@qq.com 17791378 16/11/2025 no 740.03
18 18 GUO JING guo.jing26@mail.cn 18180960808 04/10/2004 2025-06-20 n 4196.37
19 19 zhou jie zhou.jie17@mail.cn 167-8513-6904 1971-01-07 13/01/2025 0 free
20 20 CHEN JING chen.jing66@qq.com - 28/04/2003 2025-05-20 0 1656
显示前 20 行,共 80 行

期望输出 (case base,行顺序不限)

#idStringbirthdayDate
1 1 null
2 2 2003-04-21
3 3 1994-02-01
4 4 2000-02-29
5 5 null
6 6 1978-07-06
7 7 null
8 8 1978-08-11
9 9 null
10 10 1977-05-14
11 11 1993-05-05
12 12 1992-01-23
13 13 1971-11-05
14 14 1981-04-09
15 15 null
16 16 null
17 17 null
18 18 2004-10-04
19 19 1971-01-07
20 20 2003-04-28
21 21 1982-07-21
22 22 1982-03-04
23 23 1999-06-24
24 24 null
25 25 1994-09-16
26 26 null
27 27 1993-09-10
28 28 1984-07-24
29 29 1993-08-05
30 30 1982-11-09
31 31 1993-08-16
32 32 1981-07-21
33 33 1979-04-12
34 34 1993-01-12
35 35 1971-11-27
36 36 1991-06-22
37 37 1979-04-24
38 38 1972-06-04
39 39 1975-08-28
40 40 null
41 41 1975-12-19
42 42 1999-11-23
43 43 1983-10-05
44 44 1979-10-04
45 45 null
46 46 1988-02-20
47 47 null
48 48 1993-04-25
49 49 1994-02-19
50 50 1988-08-15
显示前 50 行,共 80 行