sql-server - SQL 服务器翻译为 Postgres
问题描述
我正在将一个 sql server 数据库转换为 postgres,并被困在这个函数中
CREATE function [dbo].[GetEndOfTheDayMoment](@date datetime)
returns datetime
as
begin
return CONVERT(DATETIME, CONVERT(varchar(11),@date, 111 ) + ' 23:59:59.997', 111)
end
我不知道如何用 postgres 语言编写 return 语句。我在过去几周与 postgres 说过,有人可以帮助我吗?
谢谢
解决方案
据我所知,这只是将输入日期/时间返回到同一天,就在午夜之前。
到 Postgres 的转换在一定程度上取决于您输入的数据类型。
如果你的输入是一个date
值(而不是一个timestamp
值),你可以使用这个:
create or replace function dbo.getendofthedaymoment(p_date date)
returns timestamp -- or maybe timestamp with time zone??
as
$$
select p_date + time '23:59:59.997';
$$
language sql
stable;
如果您的输入值为 a timestamp
,则可以使用以下内容:
create or replace function dbo.getendofthedaymoment(p_date timestamp)
returns timestamp -- or maybe timestamp with time zone??
as
$$
select p_date::date + time '23:59:59.997';
$$
language sql
stable;
由于 Postgres 支持函数重载,您可以定义这两个函数,Postgres 将根据您的输入值选择合适的函数。
您可能还想添加一个接受timestamp with time zone
(aka timestamptz
)的版本
该dbo
模式不是 Postgres 中的默认模式。所以你要么需要手动创建它,要么在不同的模式中创建函数(例如public
)
推荐阅读
- c# - 即使用户已登录,httpcontext 也将用户身份返回为 null,尝试为 hangfire 设置 authenticationfilter
- c - 无法将 Mingw-w64 正确添加到 Windows 8.1 上的路径
- python - 如何在不修改常量值和数据类型的情况下将结果存储在变量中
- java - 返回单链表的大小但不能使用head
- c++ - 为什么 VS 测试资源管理器不显示我的 C++ 自定义异常消息?
- r - RDSTK::street2coordinates 连接失败
- vue.js - Vuex 状态不会在 Vue 实例之间更新
- python - 从 csv 词频列表中删除重复项
- php - 将不同行的数据合并到一个单元格中
- reactjs - 样式化的组件算术运算