使用派生列,我添加 3 列 -> 2 列用于日期,1 列用于时间戳。对于日期列,我传递一个字符串作为参数。例如:21-11-2021 和 timstamp 我正在使用 currenttimestamp 函数。
我在派生列中编写了表达式,将它们转换为日期和时间戳数据类型,并且还采用目标表需要的格式,分别为 dd-MM-yyyy 和 dd-MM-yyyy HH:mm:ss
对于日期->
使用的表达式:toDate($initialdate, 'dd-MM-yyyy')
数据预览输出:2021-01-21 --(不是我想要的格式)
pipline 调试运行后,目标 DB(Azure sql 数据库)列中的值: 2021-01-21T00:00:00 -- 在表中显示如下我不明白为什么
对于 Timstamp 转换:
所用表达:
toTimestamp(toString(currentTimestamp(), 'dd-MM-yyyy HH:mm:ss', '欧洲/阿姆斯特丹'), 'dd-MM-yyyy HH:mm:ss')
数据预览输出:2021-11-17 19:37:04 -- 不是我想要的格式
pipline 调试运行后,目标 DB(Azure sql 数据库)列中的值: 2021-11-17T19:37:04:932 - 在表中显示如下我不明白为什么
问题 1:我没有获取目标所需格式的值???并且它应该仅分别为 DATE 和 Datetime2 数据类型,因此没有字符串转换
问题2:调试运行后我不知道为什么插入后表值看起来与数据预览不同???
Kinldy 让我知道我是否写了任何错误的表达方式??
--抱歉我无法发布图片---
toDate() 将输入日期字符串转换为日期,默认格式为 yyyy-[M]M-[d]d。 可接受的格式为:[ yyyy、yyyy-[M]M、yyyy-[M]M-[d]d、yyyy-[M]M-[d]dT* ]。
与 toTimestamp() 相同,使用时默认模式为 yyyy-[M]M-[d]d hh:mm:ss[.f...]。
在
Azure SQL Database
中,默认的 date 和 datetime2 格式为 YYYY-MM-DD 和 YYYY-MM-DD HH:mm:ss,如下所示。
date
和 DateTime
的输出格式。加载到Azure SQL数据库后,如下图:
注意:当数据类型为varchar时会出现此格式
select id, col1, date1, convert(varchar(10),date1,105) as 'dd-MM-YYYY' from test1
select getdate() as a, getdate() AT TIME ZONE 'UTC' AT TIME ZONE 'Central Standard Time' as b
您也可以参考sys.time_zone_info视图来查看当前UTC偏移信息。
select * from sys.time_zone_info