广告
返回顶部
首页 > 资讯 > 数据库 >PostgreSQL如何实现类似CURRENT_DATE函数的功能
  • 786
分享到

PostgreSQL如何实现类似CURRENT_DATE函数的功能

2024-04-02 19:04:59 786人浏览 薄情痞子
摘要

小编给大家分享一下postgresql如何实现类似CURRENT_DATE函数的功能,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧

小编给大家分享一下postgresql如何实现类似CURRENT_DATE函数的功能,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!

一、实现

实现部分,涉及到转换sqlValueFunction(在gram.y中把新增的列zz_sysdate设置为SQLValueFunction),解析SQLValueFunction以及PG的一些内部处理.
转换SQLValueFunction
SQLValueFunction转换在文件src/backend/parser/parse_expr.c中,对应的函数是transfORMSQLValueFunction,新增/修改的相关代码如下:

static node *
transformSQLValueFunction(ParseState *pstate, SQLValueFunction *svf)
{
    switch (svf->op)
    {
        ...
        case SVFOP_ZZ_SYSDATE:
            svf->type = DATEOID;
            break;

解析SQLValueFunction
解析SQLValueFunction在文件src/backend/executor/execExprInterp.c中,对应的函数是ExecEvalSQLValueFunction,相关代码如下:

void
ExecEvalSQLValueFunction(ExprState *state, ExprEvalStep *op)
{
    switch (svf->op)
    {
        ...
        case SVFOP_ZZ_SYSDATE:
            *op->resvalue = DateADTGetDatum(GetSQLCurrentDate());
            break;

内部处理
PG的内部处理在文件src/backend/utils/adt/ruleutils.c中,对应的函数是get_rule_expr,相关代码如下:

static void
get_rule_expr(Node *node, deparse_context *context,
              bool showimplicit)
{
    ...
        ...
        case T_SQLValueFunction:
            {
                SQLValueFunction *svf = (SQLValueFunction *) node;
                
                switch (svf->op)
                {
                    ...
                    case SVFOP_ZZ_SYSDATE:
                        appendStringInfoString(buf, "ZZ_SYSDATE");
                        break;

二、源码解读

parse_expr.c : handle expressions in parser,处理解析器中的表达式;
execExprInterp.c : 表达式(步骤)的解析求值;
ruleutils.c : Functions to convert stored expressions/querytrees back to source text,转换存储表达式/查询树为源文本.

以上是“PostgreSQL如何实现类似CURRENT_DATE函数的功能”这篇文章的所有内容,感谢各位的阅读!相信大家都有了一定的了解,希望分享的内容对大家有所帮助,如果还想学习更多知识,欢迎关注编程网数据库频道!

您可能感兴趣的文档:

--结束END--

本文标题: PostgreSQL如何实现类似CURRENT_DATE函数的功能

本文链接: https://www.lsjlt.com/news/63694.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • PostgreSQL如何实现类似CURRENT_DATE函数的功能
    小编给大家分享一下PostgreSQL如何实现类似CURRENT_DATE函数的功能,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧...
    99+
    2022-10-18
  • Oracle中实现类似于Mysql中的Field()函数功能
    目录理论知识1. mysql中的Filed() 函数2. oracle中的Decode()函数3. Oracle中的row_number实战演练Mysql 的 Filed使用Oracle的Decodeoracle的row...
    99+
    2023-06-08
    Oracle中实现实现类似Field()函数 Oracle decode() Oracle row_number
  • HTML中如何实现类似include功能
    在HTML中,可以使用JavaScript实现类似include的功能。具体步骤如下:1. 创建一个用于加载外部HTML文件的Jav...
    99+
    2023-08-18
    HTML
  • python实现类似awk的简单功能
    命令行的awk很方便,但处理灵活一点的话对awk不熟,深入学习又没太大必要,用python做个简单的,复杂的话也用python脚本实现,程序的一致性更好。 #!/usr/bin/python #coding:utf-8 import ...
    99+
    2023-01-31
    类似 简单 功能
  • php如何实现类似百度搜索功能
    这篇“php如何实现类似百度搜索功能”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“php如何实现类似百度搜索功能”文章吧。p...
    99+
    2023-07-05
  • 【小计】PostgreSQL实现Oracle的decode函数功能
    create or replace function decode(variadic p_decode_list text[]) ret...
    99+
    2022-10-18
  • AJax如何实现类似百度搜索栏的功能
    小编给大家分享一下AJax如何实现类似百度搜索栏的功能,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!实习过程中需要用到异步提交功能,于是试着去了解了一下ajax,...
    99+
    2023-06-08
  • MySQL实现数据炸裂拆分(类似Hive的explode函数的拆分数组功能)
    MySQL实现数据炸裂拆分(类似Hive的"explode"函数的拆分数组功能) 需求背景 背景描述 ​ 在Hive中,"explode"函数用于将数组类型的列拆分为多行,以便对数组中的每个元素进行处...
    99+
    2023-09-20
    mysql hive 数据库 大数据
  • mysql中类似oracle的over() row_number()的功能实现
    从网上找了很多资料,参考了如下链接,完成了一个需求:下一行的开始时间,作为上一行开始时间的结束时间。 https://www.cnblogs.com/yhzh/p/6222580.html 以下是自己做的...
    99+
    2022-10-18
  • 【小计】PostgreSQL实现Oracle的trunc日期函数功能
    create or replace function trunc(p_timestamp timestamp with time&nbs...
    99+
    2022-10-18
  • MySQL中怎么实现rownum功能类似的语句
    本篇内容主要讲解“MySQL中怎么实现rownum功能类似的语句”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“MySQL中怎么实现rownum功能类似的语句”吧...
    99+
    2022-10-18
  • Android编程实现文件浏览功能的方法【类似于FileDialog的功能】
    本文实例讲述了Android编程实现文件浏览功能的方法。分享给大家供大家参考,具体如下: 最近正在弄上传文件,当时想怎么能实现fileDialog的功能呢,打开文件,浏览文件,...
    99+
    2022-06-06
    方法 Android
  • android 类似微信的摇一摇功能实现思路及代码
    代码如下: package com.eboy.testyaoyiyao; import java.text.SimpleDateFormat; import java.uti...
    99+
    2022-06-06
    Android
  • WinForm使用DataGridView实现类似Excel表格的查找替换功能
    在桌面程序开发过程中我们常常使用DataGridView作为数据展示的表格,在表格中我们可能要对数据进行查找或者替换。 其实要实现这个查找替换的功能并不难,记录下实现过程,不一定是最...
    99+
    2022-11-12
  • MySQL如何实现oracle函数INSTR的功能
    下文我给大家简单讲讲关于MySQL如何实现oracle函数INSTR的功能,大家之前了解过相关类似主题内容吗?感兴趣的话就一起来看看这篇文章吧,相信看完MySQL如何实现oracle函数INSTR的功能对大...
    99+
    2022-10-18
  • 如何使用jQuery实现一个类似GridView编辑,更新,取消和删除的功能
    这篇文章主要为大家展示了“如何使用jQuery实现一个类似GridView编辑,更新,取消和删除的功能”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“如何使用jQ...
    99+
    2022-10-19
  • mysql如何实现类似于oracle的merge语句
    小编给大家分享一下mysql如何实现类似于oracle的merge语句,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧! 定期更新一个表A,但是表的数据来自于另一张表B。 A表和B表...
    99+
    2022-10-18
  • python如何实现类似defer的延迟调用
    这篇文章给大家分享的是有关python如何实现类似defer的延迟调用的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。实现类似 defer 的延迟调用在 Golang 中有一种延迟调用的机制,关键字是 defer,...
    99+
    2023-06-27
  • 基于HTML5实现类似微信手机摇一摇功能的示例分析
    小编给大家分享一下基于HTML5实现类似微信手机摇一摇功能的示例分析,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!1、 ...
    99+
    2022-10-19
  • PHP怎么实现类似于C语言的文件读取及解析功能
    这篇文章主要介绍了PHP怎么实现类似于C语言的文件读取及解析功能的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇PHP怎么实现类似于C语言的文件读取及解析功能文章都会有所收获,下面我们一起来看看吧。具体如下:$l...
    99+
    2023-06-08
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作