我在SQL中有一个数字列,需要将其转换为日期。该字段当前以"20181226.00000"
的形式进入数据库。
我只需要" . "
之前的字符。所以我做了SUBSTRING - CHARINDEX
来寻找" . "
之前的任何东西。然后,我将其投射为NVARCHAR
。
现在我得到20181226
,但我希望此日期字段填充为:
"MM/DD/YYYY"
。
我当前的SQL是:
CONVERT(VARCHAR(10),SUBSTRING(CAST('MYFIELD' AS NVARCHAR(50)) ,0, CHARINDEX('.', 'MYFIELD' , 0)),101)
答案 0 :(得分:0)
只需将101更改为103
CONVERT(VARCHAR(10),SUBSTRING(CAST('MYFIELD' AS NVARCHAR(50)) ,0, CHARINDEX('.', 'MYFIELD' , 0)),101)
答案 1 :(得分:0)
最简单的方法是将其转换为实际的date
,然后使用正确的样式转换回varchar
。
SELECT convert(varchar(max), convert(date, substring(convert(varchar(max), nmuloc), 1, charindex('.', convert(varchar(max), nmuloc)) - 1)), 101)
FROM elbat;
我不确定这是数字还是字符串。如果是字符串,则不需要convert(varchar(max), nmuloc)
。
但是请注意:您不应将日期存储为数字或字符串。使用适当的数据类型,例如date
。
答案 2 :(得分:0)
或者您可以像这样实现它。
declare @v_value numeric(18,5)=20181226.00000
SELECT SUBSTRING(CAST(CAST(@v_value AS INT) AS VARCHAR),5,2)+'/'+SUBSTRING(CAST(CAST(@v_value AS INT) AS VARCHAR),7,2)+'/'+SUBSTRING(CAST(CAST(@v_value AS INT) AS VARCHAR),1,4) as V_OUTPUT
--Output
/*
V_OUTPUT
------------------
12/26/2018
*/
最好的问候,
会
答案 3 :(得分:0)
首先我们先转换为varchar,然后转换为日期格式
SELECT CONVERT(varchar, CAST(CAST('20181206.00000' as VARCHAR(8)) AS DATE), 103); dd/mm/yyyy
SELECT CONVERT(varchar, CAST(CAST('20181206.00000' as VARCHAR(8)) AS DATE), 101); mm/dd/yyyy