Sql 如何使用日期格式ARRDAT(20140523)和DEPDAT(20140815)查找datediff
日期格式是不同的,有人能帮我用不同的日期格式吗 如何使用日期格式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
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标准格式,无论国际化设置如何。