【问题标题】:Convert datetime to different format将日期时间转换为不同的格式
【发布时间】:2025-12-20 23:30:12
【问题描述】:

我正在使用 datediff 函数,但它似乎不起作用。它只是在数据扩展中给出一个空结果。

我目前使用的是什么

DATEDIFF(year, creation_date__c, SYSDATETIMEOFFSET()) AS AnniversaryYears

creation_date__c 格式如下:2016 年 12 月 5 日星期一 12:00 AM

因此,当在 w3schools 上在线执行此操作时,它似乎有效:

SELECT DATEDIFF(year, PARSE(‘Monday, December 05, 2016 12:00 AM’ AS datetime), SYSDATETIMEOFFSET()) AS DateDiff;

但是当使用带有 creation_date__c 的 parse 函数时,它会给出以下错误:检查查询语法时发生错误。错误:参数数据类型 datetime 对 parse 函数的参数 1 无效。

关于如何解析它或我可能做错了什么的任何想法?

【问题讨论】:

  • 您使用的是哪个 dbms? (那里使用了几个产品特定的功能......)
  • 您使用的是什么数据库引擎? (提示:SQL =“结构化查询语言”。如果您使用的是 MS SQL Server,请适当地标记问题)。
  • creation_date__c的格式如下”。打扰一下。为什么不使用日期/时间的内置数据类型。修复你的数据,你的代码就可以工作了。
  • 这是 Salesforce Marketing Cloud 中的查询语言。 Gordon,这是 Salesforce 中的标准数据类型。

标签: sql datediff


【解决方案1】:

我相信您正在尝试将日期时间解析为日期时间,请参阅下面的修复。在 SSMS 中,我从两个语句中得到相同的输出。要使用 PARSE(variable as DATETIME),您需要有一个类型可以转换为 DATETIME 的变量。

DECLARE @creation_date__c  VARCHAR(MAX) = 'Monday, December 05, 2016 12:00 AM' ; 

SELECT DATEDIFF(year, PARSE(@creation_date__c as datetime), SYSDATETIMEOFFSET()) AS 
DateDiff

【讨论】: