在本网站和其他网站上进行了大量研究,但仍然没有有效的解决方案。我有一列varchar
数据类型,它包含DateTime
个数据。我只需要在Date
类型列中存储Date
部分。尝试过Cast,Convert和其他功能的不同方式,但仍然无法使其发挥作用。
基本上我想转换这个
Tue Apr 26 2016 13:54:53 GMT+0200 (CEST)
到
04/26/2016
答案 0 :(得分:2)
假设您的日期和月份部分总是3个字符,这可以简单地完成:
DECLARE @d VARCHAR(100)='Tue Apr 26 2016 13:54:53 GMT+0200 (CEST)';
SELECT CONVERT(DATE,SUBSTRING(@d,4,12),109);
如果这很容易,我必须找到CHARINDEX
的空白,但我不这么认为......
格式代码109
表示mon dd yyyy hh:mi:ss:mmmAM (or PM)
Details here。
请注意,魔鬼会直接发送包含语言依赖部分的格式,以创建永无止境的痛苦......这对于具有不同语言设置的服务器无效!
答案 1 :(得分:1)
Declare @String varchar(max) = 'Tue Apr 26 2016 13:54:53 GMT+0200 (CEST)'
Select cast(Substring(@String,12,4)+Substring(@String,4,7) as date)
返回
2016-04-26
答案 2 :(得分:1)
好的一些事情,你有一个看起来像伪造ISO 8601但不是标准的字段。第一个问题是:"这是从哪里来的?"通常情况下,你没有“星期二”。或者' GMT'或者'(CEST)'在标准中,与Greenwich Meantime的偏移格式为(+/-)##:## NOT(+/-)####。 SQL和许多其他格式可以轻松接受ISO 8601格式的标准化字符串。好的简要说明:https://www.w3.org/TR/NOTE-datetime
话虽如此,你可以轻松地得到你想要的东西:
var changedElements = $("input:checkbox").filter(function() {
var originalValue = $(this).attr("originalValue"); //unsure if this is auto-parsed to a bool, will have to check
var originalBoolValue = originalValue === "true";
return originalBoolValue != this.checked;
});
这里要实现的真实事情是使用convert函数进行DateTime的神奇转换。但是你可能想知道如果我希望它看起来不一样怎么样?'。试试这个页面:
http://www.sql-server-helper.com/tips/date-formats.aspx
即使我能解析你的例子,我只是发现事物的位置似乎来自一个字符串,我会很谨慎。如果你得到的东西不符合标准,你应该知道原因。主要原因是你可能能够使这个工作用于特定的实例,但不能一遍又一遍地重复这种模式。