mssql中的日期转换格式

mssql中的日期转换格式,sql,sql-server,Sql,Sql Server,我的hiredate列是yyyy-mm-dd hh:mm:ss格式现在我希望输出格式是dd-Mon-yyyy-HR:mm格式 例如:- hiredate(数据类型为varchar) 2018-04-16 12:19:10 如果2018年4月16日12:20,则需要输出。试试这个 DECLARE @MyDt NVARCHAR(50)='2018-04-16 12:19:10' SELECT InputDt = @MyDt, NewDt = REPLACE(LTRIM(RTRIM(

我的hiredate列是
yyyy-mm-dd hh:mm:ss
格式现在我希望输出格式是
dd-Mon-yyyy-HR:mm
格式

例如:-

hiredate(数据类型为
varchar
) 2018-04-16 12:19:10

如果2018年4月16日12:20,则需要输出。

试试这个

DECLARE @MyDt NVARCHAR(50)='2018-04-16 12:19:10'

SELECT
    InputDt = @MyDt,
    NewDt = REPLACE(LTRIM(RTRIM(CONVERT(CHAR,CAST(@MyDt AS DATETIME),106))),' ','-')
+' '+CAST(CAST(@MyDt AS TIME) AS NVARCHAR(20))
我的结果是:


正如评论所说,您应该将日期和时间导入
datetime
datetime2
列。但是,如果您坚持使用现有数据,这可能是您能获得的最接近的数据:

SELECT CONVERT(varchar(50), DATEADD(minute, DATEDIFF(minute, 0, DATEADD(second, 30, CAST('2018-04-16 12:19:10' as datetime2(0)))), 0), 113)
    , CONVERT(varchar(50), DATEADD(minute, DATEDIFF(minute, 0, DATEADD(second, 30, CAST('2018-04-16 12:19:31' as datetime2(0)))), 0), 113);
您可以加入一些字符串操作,为其中的日期部分添加破折号

请注意,第二个
CONVERT
用于
12:19:31
时间,该时间显示结果在需要时向上取整(在本例中为
12:20


有关转换格式的更多信息,请查看。

您需要将字段转换为日期时间,然后使用
格式
功能

FORMAT
函数中有三个参数

  • 你的约会时间[要求]
  • 对于这种情况,您需要设置
    dd MMM yyy hh:mm
    [requird]
  • 文化[可选]
  • 根据您的问题,您需要检查datetime中是否有秒

    因此,添加一个
    CASE
    表达式来创建它

    DECLARE @Dt VARCHAR(50) = '2018-04-16 12:19:10'
    
    SELECT 
    CASE 
      WHEN FORMAT(CAST(@Dt as datetime),'ss') > 0 
      THEN FORMAT(DATEADD(MINUTE,1,CAST(@Dt as datetime)),'dd-MMM-yyyy hh:mm', 'en-US') 
      ELSE FORMAT(CAST(@Dt as datetime),'dd-MMM-yyyy hh:mm', 'en-US')
    END
    
    sqlfiddle:

    试试这个

    DECLARE @d varchar(50) = '2018-04-16 12:19:10'
    SET @d = FORMAT(CONVERT(datetime, @d), 'dd-MMM-yyyy HH:MM', 'en-us')
    SELECT @d
    
    或者这个

    SELECT FORMAT(CONVERT(datetime, '2018-04-16 12:19:10'), 'dd-MMM-yyyy HH:MM', 'en-us')
    
    结果


    为什么要在
    varchar
    列中存储日期?在使用导入选项将数据加载到表中时,我使用了varchar。您应该存储为时间戳或日期或日期时间格式1。s、 PI+PR存在于(t.PI+PR)2.s.PI+PR=t.PI+PR,s.CI+CR存在于(t.CI+CR)3。如果存在(s.PI+PR=t.PI+PR和s.CI+CR=t.CI+CR),则s.qty=t.qty;s、 找不到