在变量中设置日期格式

时间:2016-10-27 09:07:48

标签: mysql sql-server date

只是想知道是否有人可以帮我设置报表的日期变量,以便每年在特定日期之间运行,而无需手动更新。

例如,我在下面对日期进行了硬编码,但我想知道是否可以设置日期格式,以确定2017年的日期是否会发生变化。我认为有一种方法可以设置年度日期格式,我只是不确定如何。

这是我设置的硬编码变量。 输入错误的日期范围如下所示。

set @start_date =   '2016-01-02';
set @end_date = '2017-01-01';   

以下是我在where子句中的内容。

and create_date between  @start_date and  @end_date

4 个答案:

答案 0 :(得分:0)

您的范围涵盖一年中的所有日期, 1月1日除外。所以你可以简单地查看日期和月份:

WHERE NOT (DAY(create_date) = 1 AND MONTH(create_date) = 1)

答案 1 :(得分:0)

你走了。

declare @s datetime, @e datetime
set @s=cast(cast(year(getdate()) as char(4))+'-01-02' as date)
set @e=cast(cast(year(getdate()) as char(4))+'-12-31' as date)
select @s,@e

最诚挚的问候,
KARTHIK

答案 2 :(得分:0)

设置@start_date = CAST(CAST(YEAR(getdate())AS nvarchar(4))+'0102'AS DATETIME);

获得当年年底

SET @end_date = DATEADD(day,-1,DATEADD(month,13 - MONTH(getdate()),DATEADD(day,1 - DAY(getdate()),getdate())));

答案 3 :(得分:0)

我假设您想要基于“今天”的完整“当前年度”

的MySQL

select
  DATEADD(YEAR, DATEDIFF(YEAR, 0, GETDATE()) , 0) This_year_start
, DATEADD(YEAR, DATEDIFF(YEAR, -1, GETDATE()), 0) Next_year_start

    This_year_start     Next_year_start
    01.01.2016 00:00:00 01.01.2017 00:00:00

用以下方法测试:

between

SQL Server(tsql)

            case ExpressionType.Conditional:
                var ce = expr.Body as ConditionalExpression;
                var cond = (MemberExpression)ce.Test;
                me = (MemberExpression) (ce != null && (bool)(Expression.Lambda(cond).Compile().DynamicInvoke()) ? ce.IfTrue : ce.IfFalse); 
                break;

用以下方法测试:

apt-get install php5-dev make build-essential pslib-dev libgd-dev php5-gd
pecl install ps-1.3.7
echo "extension=ps.so" > /etc/php5/mods-available/ps.ini
php5enmod ps
  • DATEDIFF(YEAR,0,GETDATE())计算年数 基准年
  • 将该年数添加到基准日期(1900-01-01)
  • DATEDIFF(YEAR,-1,GETDATE())计算年数 基准年之前的一年(数字较大,比1更大)
  • 将该年数添加到基准日期(1900-01-01)

避免使用@Override public Integer create(List<EventDto> events) {作为日期范围。使用&gt; =和&lt;的组合会更安全。

e.g。 其中create_date&gt; ='2016-01-01'和create_date&lt; '2017年1月1日'

使用这种方法,无论何时适用于[create_date]中的数据,您都将获得所需的精确信息范围。