【问题标题】:How do I do select where year is provided as parameter of function如何选择提供年份作为函数参数的位置
【发布时间】:2019-08-15 20:07:53
【问题描述】:

我正在尝试设置某个程序,我需要设置一个包括光标在内的功能。

我已经完成了所有工作,除了选择检查光标的记录是否在作为函数参数提供的一年内(类似于 function(id,year)...) 但我不知道如何用sql写下来。我已经尝试在 01-01 年和 12-31 年之间使用,它似乎只有在我输入“2016-01-01”等内容时才有效。有没有简单的方法?

【问题讨论】:

  • read this谨慎提供您当前的代码或代码示例。
  • 您使用的是哪个DBMS 产品? “SQL”只是一种查询语言,而不是特定数据库产品的名称。请为您使用的数据库产品添加tag postgresql, oracle, sql-server, db2, ...
  • 在 Oracle 中,假设您将年份作为名为 p_yearinteger 参数传递,那么 trunc(to_date(p_year,'YYYY'),'YEAR') 是 1 月 1 日,trunc(to_date(p_year +1,'YYYY'),'YEAR') -1 是 12 月 31 日。您可以直接在查询中使用这些表达式,或者将它们保存到变量中以获得更易读的查询。

标签: sql date plsql


【解决方案1】:

如果使用sql server,可以使用函数year 例子

declare @d as date
set @d='01/05/2019'
select year(@d) [year]

【讨论】:

  • 你怎么知道 Mateusz 正在使用 SQL Server?
【解决方案2】:

MySQL 选择 my_filed where year(field_date) = year(given_date)

我认为这是 ANSI select my_field where EXTRACT(YEAR FROM date)

不确定,但 SQL Server 也有 YEAR(date_field) 的实现

【讨论】:

  • 我没有说我正在使用 PLSQL,但 EXTRACT 方法可以完美地发挥我的作用。感谢您的帮助!
  • ANSI 是一个安全的选择。它是所有 SQL 实现中 SQL 的基本实现。 (它并不总是最快的)。
猜你喜欢
  • 2016-08-25
  • 2015-03-12
  • 2020-02-12
  • 2012-12-09
  • 2018-02-17
  • 2018-05-15
  • 2018-11-25
  • 2011-01-02
  • 1970-01-01
相关资源
最近更新 更多