gpt4 book ai didi

sql - 将英国格式日期转换为日期时间

转载 作者:行者123 更新时间:2023-12-04 14:05:10 24 4
gpt4 key购买 nike

我在 SQL 中有一个表示日期的值,但它的类型为 nvarchar。日期值的格式为:

dd/mm/yyyy hh:mm

我需要通过 View 以 DATETIME 格式向 CCure 800 数据库显示此专栏。我希望使用 CAST/CONVERT;但是,使用它时,会返回以下错误:

Msg 242, Level 16, State 3, Line 1
The conversion of a varchar data type to a datetime data type resulted in an out-of-range value.

最佳答案

请停止将日期存储为字符串,尤其是为 Unicode 字符串。您是否担心我们日历的某些 future 版本会使用变音符号、井号、象形文字或普通话而不是数字?

将日期存储为日期。这就是这些数据类型的用途。除了不必担心无效解释之外,您还可以获得 DATEPARTDATEADD 等所有好处,而且您不必担心任何人填充列中的废话(从 31/02/2012'I don't want to enter a real date'...

与此同时,您只需要使用带有 CONVERT 的样式编号(这不能可靠地用于 CAST):

SELECT CONVERT(DATETIME, '13/06/2013 09:32', 103);

要使其与 CAST 一起工作,您可以相应地设置您的 LANGUAGEDATEFORMAT 设置,但您不能在 View ,无论如何恕我直言,它使代码非常脆弱。

SET DATEFORMAT DMY;
SELECT CAST('13/06/2013 09:32' AS DATETIME);

或者

SET LANGUAGE BRITISH;
SELECT CAST('13/06/2013 09:32' AS DATETIME);

在很大程度上,我更喜欢 CONVERT 为您提供的额外控制,并且几乎单方面将 CAST 的所有实例更改为 CONVERT,即使不需要此控件,为了保持一致性(为什么在某些情况下使用 CAST,而在需要时使用 CONVERT,当您可以只使用 CONVERT总是?)。

编辑

要识别由于错误的数据类型选择而偷偷进入您的表的垃圾数据,请执行此操作(然后修复数据,或者更好的是,修复数据类型以免再次发生这种情况):

SET DATEFORMAT DMY;
SELECT date_column FROM dbo.table_name WHERE ISDATE(date_column) = 0;

关于sql - 将英国格式日期转换为日期时间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15275813/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com