TSQL如何将日期从MMM d YYYY更改为YYYYMMDD

时间:2016-04-07 22:28:12

标签: sql sql-server tsql date

我正在尝试使用此查询执行一些操作。我会用同一个数据集问一个单独的问题,以便在这个论坛中有意义。

1)我正在尝试将我的声明声明中的PrevBiz日期更改为YYYYMMDD而不是2016年4月6日。有任何建议吗?

2)如何在select语句中获取PreviousBizDate以显示为YYYYMMDD或YYYY-MM-DD并删除时间戳?

   DECLARE @TODAY       DATE    = GETDATE()
    DECLARE @PREVFIRST  CHAR(8) = CONVERT(CHAR(8), DATEADD(MONTH, DATEDIFF(MONTH, 0, GETDATE()) - 1, 0), 112)
DECLARE @PREVLAST   CHAR(8) = CONVERT(CHAR(8), DATEADD(MONTH, DATEDIFF(MONTH, 0, GETDATE()), -1), 112) 
        DECLARE @PREVBIZ    CHAR(12) = DATEADD(DAY, CASE DATENAME(WEEKDAY, CONVERT(CHAR(12), @TODAY,112))
                            WHEN 'SUNDAY' THEN -2
                            WHEN 'MONDAY' THEN -3
                            ELSE -1 END, DATEDIFF(DAY, 0, CONVERT(CHAR(12), @TODAY, 112)))

          SELECT TOP 10
          CURRENTDATE       =@TODAY, 
          FIRST_OF_MONTH    =@PREVFIRST,
          LASTDAY_OFMONTH   =@PREVLAST,
          PREVBIZ           =@PREVBIZ,

           DATEADD(DAY, CASE DATENAME(WEEKDAY, CONVERT(DATE, @TODAY,101))
            WHEN 'SUNDAY' THEN -2
            WHEN 'MONDAY' THEN -3
            ELSE -1 END, DATEDIFF(DAY, 0, CONVERT(DATE, @TODAY, 101))) AS PREVIOUSBIZDATE,

          OpendDate 

          FROM [USBI_DW].[USBI].[vw_NameAddressBase]
          where IsCurrent = 1

这是我的结果: enter image description here

2 个答案:

答案 0 :(得分:2)

void output() { cout << "\n"; }

template <typename T, typename ...P>
void output(T t, P ...p) { // ... }

使用日期名称功能时要小心......这取决于LocaleID和语言

答案 1 :(得分:1)

从Microsoft MSDN https://msdn.microsoft.com/en-us/library/ms187928.aspx检查此链接,您正在寻找的答案似乎是:

CONVERT(DATE, @TODAY, 102)

CONVERT(DATE, @TODAY, 112)