Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/hadoop/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
是否可以使用SQL将datetime列转换为字符串_Sql_H2_Sybase - Fatal编程技术网

是否可以使用SQL将datetime列转换为字符串

是否可以使用SQL将datetime列转换为字符串,sql,h2,sybase,Sql,H2,Sybase,我在sybase中将一列定义为日期时间,并使用 ISNULL(CAST(CAST(most_recent_trades.asof_date AS DATE) AS VARCHAR(20)) 事实证明,在sybase中将其表示为字符串与我的单元测试db(H2)不同 In sybase Sep 1 2016 In H2 2016-09-01 该列在H2中也定义为datetime 有没有办法将datetime列转换为Sybase和H2中相同的字符串表示形式(如果有帮助的话,我不需要时间部分)

我在sybase中将一列定义为日期时间,并使用

ISNULL(CAST(CAST(most_recent_trades.asof_date AS DATE) AS VARCHAR(20))
事实证明,在sybase中将其表示为字符串与我的单元测试db(H2)不同

In sybase
Sep  1 2016

In H2
2016-09-01
该列在H2中也定义为datetime

有没有办法将datetime列转换为Sybase和H2中相同的字符串表示形式(如果有帮助的话,我不需要时间部分)

编辑:
我不认为有任何方法可以通过一个函数以可移植的方式实现这一点,因此我决定使用年、月和日函数(它们在Sybase和H2中都可用),提取部分并将它们连接起来,以使日期在Sybase和H2中表示为字符串时看起来相同。这在这一点上对我有效。

我将使用函数的格式
121
,然后获取它的日期部分,如下所示:

substring(convert(varchar(30), most_recent_trades.asof_date, 121), 1, 10)

您可以在Sybase中使用
convert()
来选择所需的格式。我认为这解决了你的问题。转换有两个问题:1。H2和Sybase之间的参数顺序不同,2。结果与通常使用ISO格式的结果相同。在本例中,这是
2016-09-01
(使用H2的)。这在H2中甚至不起作用。如果我没有与生产数据库不同的单元测试数据库,我就不会问这个问题!此代码在Sybase中工作以生成ISO格式的日期。H2已默认为您提供ISO格式。这是生产代码。根据我是在运行单元测试还是在生产中运行,我不能在生产代码中做不同的事情。到底为什么要在单元测试和生产中使用不同的RDBMS?你创造的工作毫无收获。考虑使用SAP ASE开发者版,而不是