Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 如何使用日期格式ARRDAT(20140523)和DEPDAT(20140815)查找datediff_Sql_Sql Server - Fatal编程技术网

Sql 如何使用日期格式ARRDAT(20140523)和DEPDAT(20140815)查找datediff

Sql 如何使用日期格式ARRDAT(20140523)和DEPDAT(20140815)查找datediff,sql,sql-server,Sql,Sql Server,日期格式是不同的,有人能帮我用不同的日期格式吗 如何使用日期格式ARRDAT(20140523)和DEPDAT(20140815)查找datediff请尝试以下查询: SELECT DATEDIFF( DAY, CAST(SUBSTRING(APPDAT,1,4)+'-'+SUBSTRING(APPDAT,5,2)+'-'+SUBSTRING(APPDAT,7,2) AS DATE), CAST(SUBST

日期格式是不同的,有人能帮我用不同的日期格式吗

如何使用日期格式ARRDAT(20140523)和DEPDAT(20140815)查找datediff请尝试以下查询:

SELECT DATEDIFF(    DAY, 
                    CAST(SUBSTRING(APPDAT,1,4)+'-'+SUBSTRING(APPDAT,5,2)+'-'+SUBSTRING(APPDAT,7,2) AS DATE), 
                    CAST(SUBSTRING(DEPDAT,1,4)+'-'+SUBSTRING(DEPDAT,5,2)+'-'+SUBSTRING(DEPDAT,7,2) AS DATE))
FROM YourTable

这两个值的日期格式类似于
yyyyMMdd
,这是
ISO
日期格式

了解这一点,我们可以使用以下方法:

SELECT DATEDIFF(day, ArrivalDate, DepartureDate) AS DiffInDays
  FROM (
        SELECT CONVERT(DATETIME, CAST(ARRDAT AS VARCHAR(8)), 112) AS ArrivalDate,
               CONVERT(DATETIME, CAST(DEPDAT AS VARCHAR(8)), 112) AS DepartureDate
       ) AS t
CAST(表达式为VARCHAR(8))
BIGINT
更改为
VARCHAR
,以使
CONVERT
函数工作


CONVERT(DATETIME,expression,112)
指定数据的格式为
yyyyMMdd

您的问题需要更多解释。表格布局、样本数据和期望的结果总是很有用的,特别是对于非英语母语人士来说。我有两个不同的列ARRDAT和DEPDAT,我想用它们来计算总天数。日期格式是20140525,只有在表格中才是这样。你想在天数计算中包括日期吗?另外,如果您能提供上述两列的数据类型,以便使用datediff,您需要date数据类型(date、datetime、datetime2)中的值,那就太好了。如果日期不在日期数据类型中,则必须首先转换它们。因此,您可能会得到类似datediff(convert(datetime,arrdat)、convert(datetime,depdat))的结果。不过,您可能需要使用转换来获得正确的结果。
ARRDAT
DEPDAT
是列名吗?谢谢您的建议,但这还不够解决。我想要日期转换选择ARRDAT,DEPDAT,(DATEDIFF(DAY,(convert(date,convert(VARCHAR,ARRDAT)),(convert(date,convert(VARCHAR,DEPDAT‘);)今天,我从FMOCCVEWI的伙计们那里找到了解决方案……谢谢大家。请注意,我已经将
SELECT
分为两部分,仅为了可读性,如果需要,您可以在一行中完成所有操作。实际上,您可以
cast(cast(ARRDATE as VARCHAR(8))as date)
。YYYYMMDD是SQL Server正确理解的ISO标准格式,无论国际化设置如何。