0

我在 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)
4

4 回答 4

0

最简单的方法是将其转换为实际的 a date,然后varchar使用正确的样式返回 a 。

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)s。

但是附带说明:您不应该将日期存储为数字或字符串。使用适当的数据类型,例如date.

于 2018-12-27T01:34:48.090 回答
0

Or you could achieve it like this.

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
*/

Best Regards,

Will

于 2018-12-27T07:39:32.600 回答
0

只需将 101 更改为 103

CONVERT(VARCHAR(10),SUBSTRING(CAST('MYFIELD' AS NVARCHAR(50)) ,0, CHARINDEX('.', 'MYFIELD' , 0)),101)
于 2018-12-27T01:26:34.787 回答
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 
于 2018-12-27T09:10:30.887 回答