问题描述
我无法将包含 DateTime
信息的字符串转换为 AM/PM 格式。
我在上午 12:10 和下午 12:10 得到相同的结果,但这些应该不同。
除了 12:xx:xx AM 工作正常。
我在这里做错了吗?
select
parseDateTimeBestEffort('2020-01-01 12:10:00 AM'),parseDateTimeBestEffort('2020-01-01 12:10:00 PM')
结果:
2020-01-01 12:10:00
2020-01-01 12:10:00
解决方法
此错误行为已从 ClickHouse 版本 21.1.2.15 开始修复。
不幸的是,这是当前实现的特殊性。让我们检查源代码:
AM/PM - AM 被忽略,PM 表示:如果值小于 12,则添加 12 小时。
(见parseDateTimeBestEffort.cpp)
我创建了错误 #18402 parseDateTimeBestEffort should not ignore AM abbreviation for 12th hour。
作为一种解决方法,我建议这样:
#!/bin/sh
mysql -u root -pflash << EOF
use workers;
SELECT * FROM Persons;
SELECT pid,name FROM Persons WHERE gender="F";
SELECT pid,name FROM Persons WHERE gender="M";
SELECT pid FROM Persons ORDER BY pid DESC LIMIT 1;
commit;
EOF
if [[ $(mysql -u root -p -e "select COUNT(pid) from workers.Persons" | grep -E '[[:digit:]]+') -gt "5" ]]
then
echo "Rows are greater then 50"
fi