如何在 TSQL 函数中检查正确的日期时间格式?

     2023-03-29     173

关键词:

【中文标题】如何在 TSQL 函数中检查正确的日期时间格式?【英文标题】:How to check for the correct datetime format in TSQL function? 【发布时间】:2021-03-14 01:51:34 【问题描述】:

下面的函数需要以下字符串

22.03.2016
28.02.2017 00:00:00
NULL

有时该列包含像'22.003.2016' 这样的垃圾。

如何使用 SQL Server 2008 R2 在 T-SQL 中管理这种情况?

ALTER FUNCTION [dbo].[GetItemDocDetailDataInput] 
    (@ItemDocDetailID uniqueidentifier)
RETURNS datetime2(7) 
AS
BEGIN
    DECLARE @str nvarchar(20);
    DECLARE @dataInput datetime2(7);

    SELECT @str = ISNULL([DataInput], null) 
    FROM 
        (SELECT 
             ISNULL([Value], '') AS [Value],    
             CASE
                WHEN [Value] IS NULL THEN NULL
                ELSE SUBSTRING([Value], 0, 11)
             END AS DataInput 
         FROM 
             ItemDocDetailParams 
         WHERE 
             ItemDocDetailID = @ItemDocDetailID 
             AND ItemParamTypeID = 12) D

    SELECT @dataInput = CONVERT(datetime2(7), @str, 103) 

    RETURN @dataInput;
END

【问题讨论】:

【参考方案1】:

我认为最好的方法是创建另一个 tsql 函数,我可以在其中检查字符串中的点位置,例如

22.03.2016
28.02.2017 00:00:00

所以我将使用以下语句的组合

SELECT CHARINDEX('.', '13.05.2019') AS FirstDot; 
3 -- ОК

SELECT CHARINDEX('.', '13.05.2019', 4) AS SecondDot;
6 -- ОК

SELECT CHARINDEX('.', '13.005.2019', 4) AS MatchPosition; 
7 --- NOT OK

【讨论】:

我认为最好的方法是修复数据模型以将时间数据存储在正确键入的日期/时间类型而不是字符串中。 @DanGuzman 我知道兄弟,但没有机会这样做。无论如何,在 MS SQL Server 的更高版本中有 try_parase() 和 try_convert() TSQL 方法...

java如何检查日期格式是否正确?

在Java编程中,如何检查日期格式是否正确?以下示例演示如何使用String类的matches()方法检查日期格式是否正确。packagecom.yiibai;publicclassCheckDateFormat{publicstaticvoidmain(String[]argv){booleanisDate=false;Stringdate1="9-15-1998";Stringdate2="1 查看详情

TSQL - 如何在插入之前根据不同列中的值检查值?

】TSQL-如何在插入之前根据不同列中的值检查值?【英文标题】:TSQL-Howtocheckavalueagainstavalueinadifferentcolumnbeforeinserting?【发布时间】:2009-05-0202:58:45【问题描述】:有没有办法实现一个CHECK约束来检查同一个表中不同列中的另一个... 查看详情

在javascript中检查给定的日期格式

...的验证函数必须返回true两个输入都是动态的,我不知道如何确认格式我看到了这个解决方案, 查看详情

如何从 tsql (sql 2005) 中的 utc 日期时间计算本地日期时间?

】如何从tsql(sql2005)中的utc日期时间计算本地日期时间?【英文标题】:Howtocalculatethelocaldatetimefromautcdatetimeintsql(sql2005)?【发布时间】:2011-03-2504:41:42【问题描述】:我想在tsql中循环一段时间,并打印utc日期时间和我们的本地变... 查看详情

如何在不同的字符串中查找日期并将其转换为正确的日期格式?

】如何在不同的字符串中查找日期并将其转换为正确的日期格式?【英文标题】:Howtofinddateamongdifferentstringsandconvertittocorrectdateformat?【发布时间】:2017-02-0708:40:30【问题描述】:我有一个问题,我在前端使用angularjs,所以我在指... 查看详情

TSQL 日期时间问题

】TSQL日期时间问题【英文标题】:TSQLDateTimeissue【发布时间】:2009-08-1121:23:42【问题描述】:我在这里有一个简化的案例:一个包含5个字段的表,分别为startdate、starttime、enddate、endtime和totalduration,均为varchar(20)类型。日期字段... 查看详情

VBA验证文本框中是不是存在文本,然后检查日期是不是格式正确

】VBA验证文本框中是不是存在文本,然后检查日期是不是格式正确【英文标题】:VBAtoverifyiftextexistsinatextbox,thencheckifdateisinthecorrectformatVBA验证文本框中是否存在文本,然后检查日期是否格式正确【发布时间】:2012-08-0511:58:26【问... 查看详情

Android - 如何在 SQLite 中“正确”存储日期和时间?

】Android-如何在SQLite中“正确”存储日期和时间?【英文标题】:Android-Howto"properly"storeDateandTimeinSQLite?【发布时间】:2016-09-1711:57:04【问题描述】:我已经阅读了一些关于这个问题的其他帖子。大多数答案建议将日期/时... 查看详情

在 SQL Server 日期时间字段中格式化日期时间的正确方法是啥

】在SQLServer日期时间字段中格式化日期时间的正确方法是啥【英文标题】:whatisthecorrectwaytoformatadatetimeinSQLserverdatetimefield在SQLServer日期时间字段中格式化日期时间的正确方法是什么【发布时间】:2010-12-2805:46:51【问题描述】:我... 查看详情

如何检查 SQL Server 中存储过程或函数的最后更改日期

】如何检查SQLServer中存储过程或函数的最后更改日期【英文标题】:HowtocheckdateoflastchangeinstoredprocedureorfunctioninSQLserver【发布时间】:2011-07-3113:20:45【问题描述】:我需要检查上次更改功能的时间。我知道如何检查创建日期(它... 查看详情

如何格式化熊猫日期时间? [复制]

】如何格式化熊猫日期时间?[复制]【英文标题】:Howtoformatpandasdatetime?[duplicate]【发布时间】:2019-02-2405:20:05【问题描述】:我有一个正常日期的熊猫系列,比如2017-01-01。我试图在lambda函数中调用它,但如果我调用row[\'date\'],... 查看详情

TSQL - 如何查找名称中包含日期的所有表

】TSQL-如何查找名称中包含日期的所有表【英文标题】:TSQL-Howtofindalltableswithadateinthename【发布时间】:2022-01-1915:18:13【问题描述】:场景:我见过临时备份(复制)表格并在名称末尾给出日期的情况。有时,有人忘记删除这些... 查看详情

比较两个字符串的 TSQL 函数

...的DBA出于某种原因完全反对在SSMS中使用CLR函数。我知道如何从电子邮件地址获取域名(例如:mycompany.com)。非常感谢任何建议提前致谢【问题讨论 查看详情

sqlserver中如何把数字转换成时间的格式?

参考技术A把数字转换为时间,可以使用SQL的常用函数,常用的有下面四个函数,都给列了出来:(1)dateadd函数 作用是可以在向指定日期加上一段时间的基础上,返回新的datetime值;(2)datediff函数  返回跨两个指定... 查看详情

TSQL:避免内联函数中的 MAXRECURSION 限制

】TSQL:避免内联函数中的MAXRECURSION限制【英文标题】:TSQL:avoidMAXRECURSIONlimitinainlinefunction【发布时间】:2016-06-1509:14:50【问题描述】:我有这个函数,给定一个初始日期和最后一个日期,给出该范围内的相应年/月:CREATEFUNCTION[db... 查看详情

如何将Excel日期格式转换为R中的正确日期

】如何将Excel日期格式转换为R中的正确日期【英文标题】:HowtoconvertExceldateformattoproperdateinR【发布时间】:2017-08-3100:36:45【问题描述】:我正在使用一个csv,它不幸地使用42705的数字格式记录了日期时间,尽管它应该是01/12/2016。... 查看详情

在oracle使用sql语句中如何插入日期格式的数据

INSERTINTOAgentsVALUES(10041,'Kai','Marcoux','1996-12-03','1970-12-12');使用如上语句插入时提示文字与格式字符串不匹配,INSERTINTOAgentsVALUES(10235,'Tobias','Carling','19-Dec-00','19-Oct-75');使用如上格式插... 查看详情

如何正确处理查询约束中的日期

】如何正确处理查询约束中的日期【英文标题】:Howtocorrectlyhandledatesinqueriesconstraints【发布时间】:2011-02-0216:05:56【问题描述】:我目前正在使用以下查询在2010年6月完成所有检查:selectinspections.namefrominspectionswhereto_char(inspections... 查看详情