我的表格中有一个START_DATE列,其格式为hobaa
。我试图将这些值插入另一个表格但我收到$users = array("hobaa","test");
foreach($users as $user) {
$usernames = array();
$usernames['name'][] = $user;
}
print_r($usernames['name']);
错误。我该如何解决这个问题?
示例SQL语句
YYYY-MM-DD HH:MM:SS AM/PM GMT
示例数据
date format not recognized
如果有帮助,这些是TABLE2中两列的数据类型
DATE_WITH_TIMEZONE TIMESTAMP WITH TIME ZONE
DATE_WITHOUT_TIMEZONE DATE
答案 0 :(得分:2)
我的表格中有一个
START_DATE
列,其格式为YYYY-MM-DD HH:MM:SS AM/PM GMT
假设您的START_DATE
列属于DATE
数据类型,那么您的语句不正确; DATE
列没有格式,而且是stored internally as 7-bytes。只有当它传递给您用来访问数据库的用户界面时,该UI才会格式化日期(而不是数据库)。 SQL / Plus和SQL开发人员将使用NLS_DATE_FORMAT
会话参数(每个用户会话设置并可以更改)格式化日期,因此依赖此格式可能会导致“有趣”的错误,您使用的代码确实存在不会改变,但会根据会话设置开始和停止为不同用户工作。
你可以这样做:
INSERT INTO TABLE2 (
DATE_WITH_TIMEZONE,
DATE_WITHOUT_TIMEZONE
)
SELECT FROM_TZ( CAST( START_DATE AS TIMESTAMP ), 'GMT' ),
START_DATE
FROM TABLE_DATE;
如果您的START_DATE
列是字符串数据类型(为什么要这样做?),那么您需要将其转换为适当的类型:
INSERT INTO TABLE2 (
DATE_WITH_TIMEZONE,
DATE_WITHOUT_TIMEZONE
)
SELECT TO_TIMESTAMP_TZ( START_DATE, 'YYYY-MM-DD HH12:MI:SS AM TZR' ),
CAST( TO_TIMESTAMP_TZ( START_DATE, 'YYYY-MM-DD HH12:MI:SS AM TZR' ) AS DATE )
FROM TABLE_DATE;