Ruw*_*ein 3 sql-server date-format
我有一个 CSV 文件,日期是这样写的:250909,240909
它们作为 varchars 存储在 SQL Server 数据库中。
我如何让它将它们转换为日期,以便它像这样显示:25/09/09
,使用dd/mm/yyyy
格式?
目前我可以让它进行转换,但它会像这样转换:2025/09/09
,这意味着它使用的yyyy/mm/dd
格式是错误的,看到第一列是日期,第二列是月份,第三列是年份。
我了解您的问题是如何成功地将字符串转换为 DATE 值。一个未定界的整数字符串被假定为年-月-日顺序。(当然,我同意日期应该存储在数据库中的 DATE 数据类型中的评论。)
查看 MSDN CONVERT 文档不会显示您的字符串的内置转换,但很容易解决。
http://msdn.microsoft.com/en-us/library/ms187928.aspx——CAST和 CONVERT
我将月份更改为 8 以便更容易进行复核。使用 CONVERT 样式选项 3,您可以执行以下操作:
DECLARE @String VARCHAR(10);
DECLARE @DateValue DATE;
SET @String = '250809';
-- Convert your undelimited string DDMMYY into a DATE
-- First: Add / between the string parts.
SET @STRING = SUBSTRING(@String,1,2)+'/'+
SUBSTRING(@String,3,2)+'/'+SUBSTRING(@String,5,2);
-- Second: Convert using STYLE 3 to get DD/MM/YY interpretation
SELECT @DateValue = CONVERT(Date, @String, 3);
-- Using the DATE
-- Select the value in default Year-Month-Day
SELECT @DateValue AS DefaultFormat;
-- Select the value formatted as dd/mm/yy
SELECT CONVERT(VARCHAR(20),@DateValue,3) AS [DD/MM/YY];
Run Code Online (Sandbox Code Playgroud)
最后两次选择的结果是:
DefaultFormat
-------------
2009-08-25
DD/MM/YY
--------
25/08/09
Run Code Online (Sandbox Code Playgroud)
要按照您想要的方式设置 DATE 格式,您必须插入“/”分隔符,然后使用 STYLE 3 将字符串转换为 DATE。(我确信还有其他解决方法和转换样式也可以使用。)
同样,根据需要显示日期时,您需要使用 STYLE 3