【问题标题】:Convert DD/MM/YYYY to YYYY-MM-DD at SQL server 2008 R2在 SQL Server 2008 R2 中将 DD/MM/YYYY 转换为 YYYY-MM-DD
【发布时间】:2014-03-27 04:16:35
【问题描述】:

我正在使用 SSRS 2008,一份报告有文本字段,将数据作为 DD/MM/YYYY 作为输入,但在查询时我希望将其转换为 YYYY-MM-DD。

我已尝试使用以下代码,但未能成功。

Declare @a varchar(20)= '27/03/2014'
SELECT CONVERT(varchar(20), CAST(@a as DATE),126)

输出要求为

2014-03-27

【问题讨论】:

  • 它失败了我刚刚尝试了 Declare @b char(8)= '27032014' select CONVERT(datetime,RIGHT(@b,4) + left(@b,4)) ,结果为“将 varchar 数据类型转换为 datetime 数据类型导致值超出范围。” @Yohanes Khosiawan
  • 它与其他线程中可用的相同.. 转换和转换功能。我的问题是文本字段中的输入数据就像 27/04/2014 .. 当它作为查询参数出现时,我需要将其转换为 yyyy-mm-dd。 @Yohanes Khosiawan
  • 实际上你可以消除 / 字符.. 你可以使用 set dateformat dmy 来避免 out-of-range value 错误

标签: date datetime sql-server-2008-r2 ssrs-2008


【解决方案1】:

以 SSRS 报告日期格式更改此概念的用途。

创建表az(id integer,Dob varchar(20));

insert into az values(1, '25/03/2014')
insert into az values(2, '26/03/2014')
insert into az values(3, '27/03/2014')
insert into az values(4, '28/03/2014')
select * from az

将此行用于您的文本框字段表达式:

=IIF(IsNothing(Fields!Dob.Value),"",Mid(Fields!Dob.Value,7,4) + "-" + 
Mid(Fields!Dob.Value,4,2) + "-" + Left(Fields!Dob.Value,2))

【讨论】:

    【解决方案2】:
    DECLARE @DATECOL VARCHAR(13) = '25/01/2015'
    
    -- Date Format
    SELECT CAST(RIGHT(@DATECOL,4) + '-' + LEFT(RIGHT(@DATECOL,7),2) + '-' + LEFT(@DATECOL,2) AS DATE)
    
    -- Varchar format
    SELECT RIGHT(@DATECOL,4) + '-' + LEFT(RIGHT(@DATECOL,7),2) + '-' + LEFT(@DATECOL,2)
    

    【讨论】:

      猜你喜欢
      • 2016-06-21
      • 1970-01-01
      • 1970-01-01
      • 2023-03-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多