在BigQuery中如何将DD.MM.YYYY格式字符串转为YYYY-MM-DD日期
字符串日期转标准日期格式的解决方案
直接用CAST转换失败的原因是数据库无法自动识别dd.mm.yyyy这种自定义格式的字符串,必须明确指定输入字符串的日期格式,通过解析函数完成转换。以下是主流数据库的实现方法:
BigQuery(匹配你代码中的表名语法)
使用PARSE_DATE函数,指定输入格式为%d.%m.%Y(%d代表日,%m代表月,%Y代表四位年份):
SELECT birthday, PARSE_DATE('%d.%m.%Y', birthday) AS birthday_date, CURRENT_DATETIME() AS now FROM `staff`
MySQL/MariaDB
使用STR_TO_DATE函数解析字符串:
SELECT birthday, STR_TO_DATE(birthday, '%d.%m.%Y') AS birthday_date, NOW() AS now FROM staff;
PostgreSQL
使用TO_DATE函数,对应格式字符串DD.MM.YYYY:
SELECT birthday, TO_DATE(birthday, 'DD.MM.YYYY') AS birthday_date, CURRENT_TIMESTAMP AS now FROM staff;
SQL Server
可以通过PARSE指定区域格式,或者用CONVERT配合字符串替换:
-- 方法1:利用区域格式解析(德语区默认dd.mm.yyyy) SELECT birthday, PARSE(birthday AS DATE USING 'de-DE') AS birthday_date, GETDATE() AS now FROM staff; -- 方法2:替换分隔符后用CONVERT转换 SELECT birthday, CONVERT(DATE, REPLACE(birthday, '.', '/'), 103) AS birthday_date, GETDATE() AS now FROM staff;
转换后的birthday_date字段会以标准的YYYY-MM-DD日期格式返回。
内容的提问来源于stack exchange,提问作者Georgiy Gerasimov
相关产品推荐
相关产品推荐

