【发布时间】:2019-01-03 15:16:13
【问题描述】:
我在 sybase 中有一个定义为日期时间的列,并已使用将其转换为字符串
ISNULL(CAST(CAST(most_recent_trades.asof_date AS DATE) AS VARCHAR(20))
事实证明,这个在 sybase 中作为字符串的表示形式与我的单元测试数据库 H2 不同。
In sybase
Sep 1 2016
In H2
2016-09-01
该列在 H2 中也被定义为日期时间。
有没有办法将日期时间列转换为在 Sybase 和 H2 中具有相同字符串表示形式的字符串(如果有帮助,我不需要时间部分)?
编辑: 我认为没有任何方法可以通过一个函数以可移植的方式做到这一点,所以我决定使用 YEAR、MONTH 和 DAY 函数(它们都在 Sybase 和 H2 中可用),提取部件并将它们连接起来以生成在 Sybase 和 H2 中表示为字符串时看起来相同的日期。目前这对我有用。
【问题讨论】:
-
您可以在 Sybase 中使用
convert()来选择您想要的格式。我认为这可以解决您的问题。 -
convert有两个问题:1.H2和Sybase的params顺序不同,2.结果和CAST一样
-
通常您会使用 ISO 格式。在这种情况下是
2016-09-01(使用H2的那个)。