sql如何提取当前时间的函数

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了sql如何提取当前时间的函数相关的知识,希望对你有一定的参考价值。

getdate()函数:取得系统当前的日期和时间。返回值为datetime类型的。
用法:getdate()

datepart()函数:以整数的形式返回时间的指定部分。
用法:datepart(datepart,date)
参数说明:datepart时要返回的时间的部分,常用取值year、month、day、hour、minute。
参考技术A 获取当前时间就是getdate(),各种格式如下
select Convert(varchar(10),getdate(),120)
2014-04-10
select CONVERT(varchar, getdate(), 120 )
2014-04-10 17:51:08
select replace(replace(replace(CONVERT(varchar, getdate(), 120 ),'-',''),' ',''),':','')
20140410175108

select CONVERT(varchar(12) , getdate(), 111 )
2014/04/10

select CONVERT(varchar(12) , getdate(), 112 )
20140410
select CONVERT(varchar(12) , getdate(), 102 )
2014.04.10本回答被提问者和网友采纳
参考技术B oracle
select systime from dual;

SQL中的正则表达式提取函数实现?

【中文标题】SQL中的正则表达式提取函数实现?【英文标题】:Regex in SQL to extract the function implementation? 【发布时间】:2019-03-20 23:32:54 【问题描述】:

我必须查询 github 内容才能找到特定函数 add 的实现。我使用以下 SQL 查询提取的内容:

(function(f)if(typeof exports==="object"&&typeof module!=="undefined")

module.exports=f()else if(typeof define==="function"&&define.amd)define([],f)elsevar g;if(typeof window!=="undefined")g=windowelse if(typeof global!=="undefined")g=globalelse if(typeof self!=="undefined")g=selfelseg=thisg.ngContextmenu = f())(function()var define,module,exports;return (function e(t,n,r)function s(o,u)if(!n[o])if(!t[o])var a=typeof require=="function"&&require;if(!u&&a)return a(o,!0);if(i)return i(o,!0);var f=new Error("Cannot find module '"+o+"'");throw f.code="MODULE_NOT_FOUND",fvar l=n[o]=exports:;t[o][0].call(l.exports,function(e)var n=t[o][1][e];return s(n?n:e),l,l.exports,e,t,n,r)return n[o].exportsvar i=typeof require=="function"&&require;for(var o=0;o<r.length;o++)s(r[o]);return s)(1:[function(_dereq_,module,exports)
    'use strict';

    angular.module('io.dennis.contextmenu')
    .directive('contextmenuContainer', Container);

    function Container() 
      return 
        scope: 
          contextmenu: '=contextmenuContainer'
        ,
        restrict: 'A',
        controller: ['$scope', ContainerCtrl]
      ;
    .
    .
    .
    .
      function add(entry) 
        if (!isSelected(entry)) 
          selected.unshift(entry);
          toggleSelected(entry.element, true);
        
        pub.item = selected[0].item;
      

      function remove(entry) 
        var index = selected.indexOf(entry);
        if (index > -1) 
          selected.splice(index, 1);
        
        toggleSelected(entry.element, false);
      

     .
    .
    .
      function toggle(entry, multi) 
        multi = multi || false;
        var isEntrySelected = isSelected(entry);

        if (isEntrySelected) 
          remove(entry);

         else 

          if (!multi)  clear(); 
          add(entry);
        
      

      function clear() 
        angular.forEach(selected, function(entry) 
          toggleSelected(entry.element, false);
        );
        selected = [];
      

      function getListOfIds(limit, path) 
        path = path || 'item.id';
        limit = Math.min(limit || selected.length, selected.length);
        var list = selected.slice(0, limit).map(function(entry) 
          return safeGet(entry, path, '');
        );
        var asString = list.join(', ');
        return (limit < selected.length) ? asString + '..' : asString;
      

      function toggleSelected(element, forceState) 
        element.toggleClass('selected', forceState);
      

      function safeGet(obj, path, _default) 

        if (!obj) 
          return _default;
        

        if (!path || !String(path).length) 
          return obj;
        

        var keys = (angular.isArray(path)) ? path : path.split('.');
        var next = keys.shift();
        return get(obj[next], keys, _default);
      
    

    ,],,[4])(4)
    );

还有更多这样的行。我正在使用的查询是:

SELECT
  content,
  id
FROM
  [bigquery-public-data:github_repos.sample_contents]
  WHERE
  content CONTAINS 'function add('
  AND sample_path LIKE '%.js'
  LIMIT  40;

如何修改上述查询,以便我只能提取具有输出的内容以实现函数“add”,即

function add(entry) 
    if (!isSelected(entry)) 
      selected.unshift(entry);
      toggleSelected(entry.element, true);
    
    pub.item = selected[0].item;
  

提前致谢!

【问题讨论】:

我认为仅使用正则表达式会很困难。也许如果你写了一个JavaScript UDF 你可以解析内容。请注意,BigQuery 支持两种 SQL 方言,并且您在示例中使用的是旧版 SQL,而上面的链接适用于标准 SQL。 我已将查询修改为 SELECT REGEXP_EXTRACT(content,r'add(.*(.|\n)*\n2,'), id FROM ( SELECT content, id FROM [bigquery-public-data:github_repos.sample_contents] WHERE content CONTAINS 'function add(' AND sample_path LIKE '%.js' LIMIT 40 ) 但也许我错过了什么。有人可以帮忙吗? @ElliottBrossard,你能给 JS udf 吗? 您能否在输出中提供与您的需求不符并且您想过滤掉的数据,您的问题不是很清楚到底是什么问题 【参考方案1】:

这是一个过度简化的 JavaScript UDF 版本,它甚至没有尝试匹配大括号,但我相信你明白了。我在 JavaScript 代码中留下了 cmets,供您完成非平凡的查找函数末尾的工作。尽情享受吧!

#standardSQL
CREATE TEMP FUNCTION
  filter_add(code STRING)
  RETURNS STRING
  LANGUAGE js AS """
  // find start, TODO: there may be multiple function add() in single file, handle in a loop
  var start = code.indexOf('function add(');
  // TODO: count open braces and close braces to decide where function definition ends.
  // Note that braces may be in 1) single-line comment; 2) multi-line comments; 3) part of string or char literal
  var end = code.indexOf('', start);
  return code.substr(start, end-start+1);
  """ ;
SELECT
  filter_add(content), id
FROM
  `bigquery-public-data`.github_repos.sample_contents
WHERE
  STRPOS(content, 'function add(') != 0
  AND sample_path LIKE '%.js'
LIMIT 10;

【讨论】:

以上是关于sql如何提取当前时间的函数的主要内容,如果未能解决你的问题,请参考以下文章

用sql语言怎么写,从数据库中提取一个时间与当前时间做差,将差值小于某个数的条目提取出来

sql中如何提取从数据库中所获得时间的年份

sql如何取得当前日期

JAVA关于得到当前日期两年后的日期

sql 语句中如何比较当前时间与指定时间是不是相同

sqlserver如何根据当前日期获得上月某一天的日期