我使用的是持久性原則,我的所有日期都關閉了。當它們應該是-6(美國/芝加哥)時,它們被存儲爲+6。我有PHP和對美國/芝加哥的應用服務器,可以通過確認以下內容:更正oracle上的學說datetime
php > echo (new \DateTime())->format('Y-m-d h:m:i a e');
2016-03-02 02:03:47 pm America/Chicago
我創建了一個表在Oracle與調試:
CREATE TABLE "APP"."DATE_TEST"
( "ID" VARCHAR2(36 BYTE),
"LOCALTZ" TIMESTAMP (0) WITH LOCAL TIME ZONE,
"NOTLOCALTZ" TIMESTAMP (0) WITH TIME ZONE
)
我有一個測試實體用下面的教義映射:
Acme\Project\Domain\Asset\Entity\DateTest:
type: entity
table: DATE_TEST
id:
id:
type: guid
generator:
strategy: none
fields:
localtz:
type: datetime
column: localtz
notlocaltz:
type: datetimetz
column: notlocaltz
我執行一些代碼將數據推入表:
protected function execute(InputInterface $input, OutputInterface $output)
{
$test = new DateTest();
$datetime = new \DateTime();
$test->setLocalTz($datetime);
$test->setNotLocalTz($datetime);
$output->writeln($test->getId());
$output->writeln($datetime->format('Y-m-d h:i:s a'));
$output->writeln($datetime->getTimezone()->getName());
$em = $this
->getContainer()
->get('doctrine.orm.entity_manager');
$em->persist($test);
$em->flush();
$output->writeln("Test complete.");
}
下被輸出
de4e5dcd-9fd6-4b5d-b9f0-6db9d1ef0582
2016-03-02 02:51:02 pm
America/Chicago
Test complete.
而且這是我在數據庫
de4e5dcd-9fd6-4b5d-b9f0-6db9d1ef0582 02-MAR-16 08.51.02.000000000 AM 02-MAR-16 02.51.02.000000000 PM +06:00
看到我已經得到了oracle session init迷上了。
當我查詢當前時間的數據庫,它看起來是正確的:
SELECT SYSTIMESTAMP "NOW" FROM DUAL;
02-MAR-16 02.56.44.342456000 PM -06:00
任何人能發現我在做什麼錯?
值得檢查?通過php執行這個查詢,如果你使用一個單獨的客戶端來執行misc db活動,執行它:'SELECT DBTIMEZONE,SESSIONTIMEZONE from dual;' – Beege
@Beege從php執行這些查詢返回「+00:00」兩個查詢。這似乎不正確... – David