mssql中的日期转换格式
我的hiredate列是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(
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]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、 找不到