如何从印尼字符串中获取日期时间值

时间:2012-04-25 13:27:38

标签: sql sql-server

我需要导入从印尼文件中获取的一些数据,其中一部分是“01OKT2011”形式的日期。我需要能够自动将这些转换为T-SQL日期时间,例如10-01-2011 00:00:00。

我能想到的最简单的方法是创建一个查找表,其中包含一个用于外部短名称的列和一个用于月份编号的列,但由于我拥有的唯一源文件这使得这更加困难目前仅涵盖10月和11月,我不完全确定其他月份将如何缩写。

有更简单的方法吗? SQL Server中的一种内置语言是否使用相同的月份短名称?

1 个答案:

答案 0 :(得分:0)

查看您的syslanguages表,了解您的SQL Server安装是否支持印尼语。

假设SQL Server支持Indonesian,请将语言设置为它。另外,SET DATEFORMAT ymd。然后直接使用日期时间。

如果不支持/安装印度尼西亚语,您应该尽力解决数据库之外的本地化问题(即使数据库服务器愿意了解您的月份名称,我实际上也会建议这样做,但我正在保存这个建议一个完全不同的问题)。

在这种情况下,如果不是实际使用,以下方法可能会帮助您至少转换您的数据。

DATETIMEFROMPARTS(
    SUBSTRING(x, 6, 4), 
    REPLACE(...(REPLACE(SUBSTRING(x, 3, 3), 'JAN', 'Jan')...,'OKT', 'Oct'),...,'DEC', 'Dec')...),
    SUBSTRING(x, 1, 2)
)