我想创建一个函数,它有一个参数(一个包含日期的字符串)然后该函数转换它并返回它。在我们公司,我们有三种不同语言的工作站。我们也有匈牙利语,英语和德语工作站。我想从注册表中读取日期,但是这个日期将根据当前的区域设置写入注册表。
因此,如果区域设置是匈牙利语,则日期写入日期注册表是2012.01.25(YYY.MM.DD),但如果我将区域设置更改为德语,则写入注册表的值将为25/01 / 2012(MM.DD.YYYY)。如果我将区域设置更改为英语,则该值将为01/25/2012(DD.MM.YYYY)。
不幸的是,我不知道在将日期写入注册表时使用了哪个区域设置,因为它可以在将值写入注册表后进行更改。
这就是为什么我想创建一个获取日期的函数,然后将其转换为这种格式:YYYY.MM.DD。但我不知道该怎么做。
有人可以帮我怎么做吗?
谢谢!
答案 0 :(得分:1)
您是直接管理此注册表值还是属于另一个软件而只是尝试过它?
如果是你的,那么
一个。如果它是一个字符串值,那么只需在存储之前格式化它,以ISO格式(yyyy-MM-dd),格式或formatdate函数就可以了。
B中。如果它是二进制值,则使用cdbl将datetime值转换为double并存储
好吧,如果它不是你的,那么这不是你的幸运日。几年前我已经完成了这个,并且我使用了日期周围的文字来对格式做出假设......
答案 1 :(得分:0)
如果您将这些日期保存在日期类型的列(DATETIME, DATE, SMALLDATETIME
等)上,那么它的显示方式或保存的语言无关紧要。如果您想将格式为YYYY.MM.DD的DATE
转换为VARCHAR
,则可以使用:CONVERT(VARCHAR(10),YourDate,102)
。
答案 2 :(得分:0)
您可以使用此表达式将字符串转换为SQL类型date
。该表达式仅在DD/MM/YYYY
格式无法使用其默认MM/DD/YYYY
格式时才使用CASE
WHEN CHARINDEX('/', val)=5 THEN CONVERT(date,val,111)
ELSE CONVERT(date, val, CASE WHEN LEFT(val,2) <= '12' THEN 101 ELSE 103 END)
END
格式。
select
此表达式应在varchar
语句中使用。我假设您的val
列的名称包含日期字符串{{1}}。