创建如下表格:
create table stg.kv_test(test_date date);
insert into stg.kv_test values ('2015-07-02');
select * from stg.kv_test
提供输出:
test_date
2015-07-02 00:00:00
我在Aginity Workbench中执行了上述查询。
我的问题如下:
在Postgres中,日期数据类型是否始终使用 时区部分?
它是如何存储在数据库中的?
我用来查询哪个工作台有问题 将时区附加到输出中?
答案 0 :(得分:2)
首先澄清一下,我认为你的意思是“时间部分”,而不是“时区部分”。您创建的字段和获得的结果不包含时区信息。
我认为您的查询工具选择使用时间部分显示日期。内部PostgreSQL stores the date type without time。
这是我在这里使用psql工具得到的:
select now()::timestamp;
now
----------------------------
2015-07-03 02:32:15.965677
(1 row)
而不是:
::date
所以它可能是Aginity。据我所知,Aginity(或任何其他sql客户端)返回的将是原始数据 - 它如何转换为文本将由客户端决定。如果您使用上面的select to_char(now(), 'YYYY-MM-DD');
to_char
------------
2015-07-03
(1 row)
显式转换,请看看会发生什么。
如果您希望查询控制文本的显示方式,请使用formatting functions在查询中转换为文本来控制输出。例如:
using System;
using System.Collections.Generic;
namespace Xamarin.Forms
{
[ContentProperty("Children")]
public abstract class Layout<T> : Layout, IViewContainer<T> where T : global::Xamarin.Forms.View
{
protected Layout();
public IList<T> Children { get; }
protected virtual void OnAdded(T view);
protected virtual void OnRemoved(T view);
}
}
请注意,上面返回的列类型为“text”类型,而其他类型为“date”或“timestamp”。