我需要导入从印尼文件中获取的一些数据,其中一部分是“01OKT2011”形式的日期。我需要能够自动将这些转换为T-SQL日期时间,例如10-01-2011 00:00:00。
我能想到的最简单的方法是创建一个查找表,其中包含一个用于外部短名称的列和一个用于月份编号的列,但由于我拥有的唯一源文件这使得这更加困难目前仅涵盖10月和11月,我不完全确定其他月份将如何缩写。
有更简单的方法吗? SQL Server中的一种内置语言是否使用相同的月份短名称?
答案 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)
)