PGSQL cast Numeric
时间: 2023-11-29 10:38:49 浏览: 164
在PGSQL中,使用CAST函数可以将Numeric类型转换为其他数据类型。CAST函数的语法如下:
CAST (expression AS target_type)
其中,expression是要转换的值,target_type是目标数据类型。例如,如果要将Numeric类型的值转换为整数类型,可以使用以下语句:
SELECT CAST(numeric_value AS integer)
请注意,目标数据类型必须与转换的值兼容,否则会引发错误。
相关问题
pgsql百分比函数
在pgsql中,可以使用以下两种方法计算百分比:
1. 使用sum() over()函数:可以通过在查询中使用sum() over()函数来计算百分比。例如,可以使用以下SQL语句计算tmp表中每个type的百分比:
SELECT tmp.type AS type, tmp.num AS num,
CASE WHEN SUM(tmp.num) OVER () = 0 THEN '0.00%'
ELSE round(CAST((100.0 * tmp.num / SUM(tmp.num) OVER ()) AS NUMERIC), 2) || '%'
END AS percentage
FROM tmp;
2. 使用percentile_cont函数:可以使用percentile_cont函数来计算百分位数。例如,可以使用以下SQL语句计算给定列的中位数:
SELECT percentile_cont(0.5) WITHIN GROUP (ORDER BY col) FROM (VALUES (2), (3), (6)) AS a(col);
这将返回结果3,表示给定列的中位数。
请注意,以上示例仅供参考,具体的SQL语句可能需要根据实际情况进行调整。
#### 引用[.reference_title]
- *1* [postgreSql利用sum() over()计算分组百分比](https://blog.csdn.net/camary_niu/article/details/118539305)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insert_down28v1,239^v3^insert_chatgpt"}} ] [.reference_item]
- *2* [【PostgreSQL】函数之百分位数&中位数:percentile_cont()](https://blog.csdn.net/qq_34105362/article/details/80650868)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insert_down28v1,239^v3^insert_chatgpt"}} ] [.reference_item]
- *3* [pg数据库百分比处理](https://blog.csdn.net/magi1201/article/details/115719675)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insert_down28v1,239^v3^insert_chatgpt"}} ] [.reference_item]
[ .reference_list ]
pgsql 时间比较
在pgsql中,可以使用TO_TIMESTAMP()函数将字符串转换为日期类型,然后进行时间比较。例如,可以使用以下语句按分钟比较差值:
```
select * from round(cast(date_part('epoch', to_timestamp(now()::text,'yyyy-mm-dd hh24:MI:SS') - to_timestamp('2022-10-08 10:10:11','yyyy-mm-dd hh24:MI:SS'))/60 as numeric ),1)
```
如果要按小时比较差值,可以使用以下语句:
```
select * from round(cast(date_part('epoch', to_timestamp(now()::text,'yyyy-mm-dd hh24:MI:SS') - to_timestamp('2022-10-08 10:10:11','yyyy-mm-dd hh24:MI:SS'))/60/60 as numeric ),1)
```
另外,如果你使用的是mybatis XML,可以直接在查询语句中使用日期类型,无需进行转换。例如:
```xml
<select id="selectList" resultType="com.entity.UserInfo" parameterType="java.util.List">
SELECT * from user_info WHERE create_time >= #{startTime} and create_time <= '2020-07-07 16:35:02'
</select>
```
希望对你有所帮助!
阅读全文