在greenplum数据库中有一个字符串类型的字段,可以使用以下构造将其转换为时间戳类型。
to_timestamp('202409676543', 'YYYYDDDSSSSSFF6')
这里的数字是随机的,主要是它由12个字符组成。 YYYY 是可以理解的年份,DDD 据我了解是一年中的第几天,SSSSS - 从这一天开始的秒数? FF6 - 也是毫秒级的。所以任务是在ms SQL server 上做类似的转换。即使你不计算秒,那么至少如何从一年中的第几天得出一个月或一天呢?例如,MySQL 显然有一个用于此目的的 makedate 公式。
我可以说这是一个非常具体的日期转换。基本上,它们是使用标准 ODBC
yyyy-MM-dd HH:mm:ss.fff或 Unix 时间戳格式构建的。这足以在大多数程序/系统之间传输日期。MSSQL中有一个“FORMAT”函数。但据我记得,它只从日期转换为字符串,但不能转换回来。最有可能的是,您需要直接在仅一种特定格式的请求中编写特定的转换器。像这样的东西:
但通用解析器会对性能产生很大影响。原则上,你可以自己写这样的东西(事实上它工作正常):
您可以用手扭转它,以便它接受各种类型的格式作为输入并输出您需要的内容:
你可以这样做: