小编mat*_*atk的帖子

SQL Server:为什么ISO-8601格式语言的日期依赖?

我需要一些帮助来理解SQL Server中的日期格式处理.

如果您尝试以下操作,它将返回正确的结果:

SET LANGUAGE English
SELECT CAST('2013-08-15' AS DATETIME)

-- 2013-08-15 00:00:00.000
Run Code Online (Sandbox Code Playgroud)

但是,这会导致转换错误,因为显然SQL Server将'8'解释为日,将'15'解释为月份:

SET LANGUAGE German
SELECT CAST('2013-08-15' AS DATETIME)

-- Conversion failed when converting date and/or time from character string.
Run Code Online (Sandbox Code Playgroud)

我知道我可以使用与语言无关(略微适应的ISO-8601)格式YYYYMMDD(没有破折号),它可以在任何语言中使用.

但是YYYY-MM-DD,当SQL Books清楚地说,我不明白为什么语言依赖

"解释取决于字符串文字格式,...和默认语言选项设置的组合....某些字符串文字格式不受这些设置的影响.... ISO 8601格式不依赖于这些设置,是国际标准."

http://technet.microsoft.com/en-us/library/ms180878%28v=sql.105%29.aspx

即使查看返回的dateformat select * from sys.syslanguages也没有任何指示 - 日期格式dmy,因此它也与ISO-8601格式不匹配.

所以,问题是:

  • 为什么ISO-8601格式依赖于语言,即使联机丛书另有说法?
  • 在哪里可以找到SQL Server在解析ISO-8601日期时使用的确切格式?

更新:

进一步阅读http://technet.microsoft.com/en-us/library/ms180878%28v=sql.105%29.aspx#ISO8601Format,它说'要使用ISO 8601格式,您必须指定每个元素格式.这包括T,冒号(:),+或 - ,以及句点(.)'(例如2004-05-23T14:25:10).

上面的表格(http://technet.microsoft.com/en-us/library/ms180878%28v=sql.105%29.aspx#StringLiteralDateandTimeFormats)表示ISO 8601数字依赖于DATEFORMAT,但它也是不是多语言.我不知道在哪里可以找到有关多语言部分的其他信息 - 例如,每种语言使用的确切格式.

sql sql-server datetime iso date

10
推荐指数
1
解决办法
2089
查看次数

使用LINQ在父对象列表中查找子对象

给定一个Parent对象列表,每个对象都有一个Child对象列表,我想找到与特定ID匹配的子对象.

public class Parent
{
    public int ID { get; set; }
    public List<Child> Children { get; set; }
}

public class Child
{
    public int ID { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

现在我希望Child对象具有特定的ID:

List<Parent> parents = GetParents();
Child childWithId17 = ???
Run Code Online (Sandbox Code Playgroud)

我怎么能用Linq做到这一点?

c# linq

9
推荐指数
2
解决办法
2万
查看次数

.NET中的自定义文化感知日期格式

在.NET中,用于格式化DateTime值的大多数标准字符串都是文化感知的,例如ShortDatePattern("d")格式字符串根据当前文化切换年/月/日部分的顺序:

6/15/2009 1:45:30 PM -> 6/15/2009 (en-US)
6/15/2009 1:45:30 PM -> 15/06/2009 (fr-FR)
6/15/2009 1:45:30 PM -> 15.06.2009 (de-DE)
Run Code Online (Sandbox Code Playgroud)

对于仅包含月和日的日期格式,我需要类似的东西:

6/15/2009 1:45:30 PM -> 6/15 (en-US)
6/15/2009 1:45:30 PM -> 15/06 (fr-FR)
6/15/2009 1:45:30 PM -> 15.06. (de-DE)
Run Code Online (Sandbox Code Playgroud)

使用例如"MM/dd"自定义格式字符串不起作用; 当我希望它显示"11.01"时,它将在1月11日在德国文化中错误地显示"01.11".

如何构建一个自定义格式字符串,将日期部分的顺序考虑在内?

.net c# datetime

7
推荐指数
1
解决办法
1083
查看次数

调试 400 Bad Request 响应

在我的 MVC 应用程序中,当一个 POST 请求被发送到服务器(通过 jQuery)并且发生验证错误时,会返回一个 400 Bad Request,正如预期的那样:

HTTP/1.1 400 Bad Request
Cache-Control: private
Content-Type: application/json; charset=utf-8
Server: Microsoft-IIS/8.5
X-AspNet-Version: 4.0.30319
Date: Thu, 26 Feb 2015 08:35:50 GMT
Content-Length: 174

{"ReturnValue":null,"Results":[{"Message":"The xyz field is required.","ErrorNumber":123,"Severity":1}]}
Run Code Online (Sandbox Code Playgroud)

这在我的本地机器上按预期工作。但是,当我将应用程序部署到服务器时,完全相同的请求的响应看起来不同:

HTTP/1.1 400 Bad Request
Cache-Control: private
Content-Type: text/html
Server: Microsoft-IIS/7.5
X-AspNet-Version: 4.0.30319
Date: Thu, 26 Feb 2015 08:37:01 GMT
Content-Length: 24

Invalid Request
Run Code Online (Sandbox Code Playgroud)

请注意,内容类型为text/html,并且响应正文不再包含 JSON。

这可能是什么原因?我会很感激一个指针从哪里开始调试。

iis json bad-request asp.net-mvc-4

5
推荐指数
1
解决办法
8119
查看次数

为可为空的 DateTime 呈现的不显眼的验证属性

我有这个设置:

视图模型:

public class MyViewModel
{
    public DateTime? Start { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

看法:

@model MvcApplication2.Models.MyViewModel
@using (Html.BeginForm())
{
    @Html.EditorFor(x => x.Start)
}
Run Code Online (Sandbox Code Playgroud)

结果 HTML:

<input class="text-box single-line" data-val="true" data-val-date="The field Start must be a date." id="Start" name="Start" type="datetime" value="" />
Run Code Online (Sandbox Code Playgroud)

此 HTML 包含不显眼的验证属性。这是为什么?我的印象是,如果 ViewModel 属性是可为空的 DateTime,则不会进行验证?

validation asp.net-mvc razor asp.net-mvc-4

4
推荐指数
1
解决办法
1433
查看次数

使用jQuery有条件地设置属性

有没有办法使用jQuery有条件地设置属性?例如,我想简化这个:

$(element).val('99');

if ([condition]) {
    $(element).attr('myAttr', 1);
}
Run Code Online (Sandbox Code Playgroud)

这有效,但迫使我打破了方法调用的链接.相反,我更喜欢这样的事情:

$(element).val('99').attr('myAttr', 1, [condition]);
Run Code Online (Sandbox Code Playgroud)

因此,仅在条件为真时才设置属性.我该怎么做?

jquery

4
推荐指数
2
解决办法
4219
查看次数

标签 统计

asp.net-mvc-4 ×2

c# ×2

datetime ×2

.net ×1

asp.net-mvc ×1

bad-request ×1

date ×1

iis ×1

iso ×1

jquery ×1

json ×1

linq ×1

razor ×1

sql ×1

sql-server ×1

validation ×1