Sales Force SQL字符串转日期:T-SQL语句适配及改写咨询
问题描述
我编写了一段在T-SQL中可正常运行的转换语句:
SELECT * FROM thetable WHERE convert(datetime, SomeDate, 103) >= '2020-10-01 00:00:00.000'
但使用Azure Data Factory从Salesforce下载数据时,粘贴该语句返回语法错误。请问:
- Salesforce支持哪种SQL方言?
- 如何改写WHERE子句中的varchar(字符串)转日期语句?
解答
1. Salesforce支持的SQL方言
Salesforce 使用的是SOQL(Salesforce Object Query Language),这是专为其平台设计的查询语言,和T-SQL(SQL Server专属方言)语法差异显著,不能直接套用T-SQL的函数与写法。
2. 改写日期转换的WHERE子句
SOQL中处理字符串转日期需根据SomeDate的格式(原T-SQL用了103格式,即dd/mm/yyyy)选择对应方式:
- 若
SomeDate是字符串类型且格式为dd/mm/yyyy,使用DATEVALUE()函数转换,目标日期采用SOQL标准格式yyyy-MM-dd:
SELECT * FROM thetable WHERE DATEVALUE(SomeDate) >= 2020-10-01
- 若需要精确到时间维度,使用
DATETIMEVALUE()函数,目标时间格式为yyyy-MM-ddTHH:mm:ssZ:
SELECT * FROM thetable WHERE DATETIMEVALUE(SomeDate) >= 2020-10-01T00:00:00Z
注意:SOQL中的日期/时间常量无需加单引号,直接按规范格式书写即可;若SomeDate的字符串格式无法被Salesforce日期函数识别,需先用LEFT()、RIGHT()等字符串函数调整格式后再进行转换。
内容的提问来源于stack exchange,提问作者euh
相关产品推荐
相关产品推荐

