SQL-转换为日期

时间:2018-12-27 01:21:30

标签: sql datetime sql-convert

我在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 个答案:

答案 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