我有一个名为users的表,在sql中,date的格式是yyyy-mm-dd 因此,当我尝试以dd / mm / yyyy格式从我的网站输入数据时,它只输入0000--00-00 如何更改sql的格式?
答案 0 :(得分:2)
SQL Server示例
Link below has an easy explanation and there's an example if it helps
SELECT convert(varchar, getdate(), 103) – dd/mm/yyyy
或者尝试将列名替换为" datecolumn"
CONVERT(varchar(19), datecolumn, 103)
答案 1 :(得分:1)
在SQL Server中,根据文章here
SET DATEFORMAT YMD;
答案 2 :(得分:0)
不知道输入的数据是什么以及零来自哪里,但这可能会有所帮助: 基本上,Oracle中Date日期中的数据可以以任何用户定义的格式存储或保留为默认格式。 这一切都取决于NLS参数。
当前格式可见:SELECT SYSDATE FROM DUAL;
如果您尝试插入记录并且插入语句不是这种格式,那么它将给出: ORA-01843:没有有效的月份错误。 所以首先在插入语句之前更改数据库日期格式(我假设你有大量加载的insert语句),然后执行insert script。
格式可以通过以下方式更改: ALTER SESSION SET nls_date_format =' mm / dd / yyyy hh24:mi:ss&#39 ;;
您也可以从SQL Developer GUI更改NLS设置,(工具>首选项>数据库> NLS)
答案 3 :(得分:0)
如果正在保存数据但是数据库中显示的数据通常是因为您将日期字段设置为默认值为null。
同样的事发生在我身上。关闭它后,它会正常保存数据。
值得注意的是,您可能需要确保代码在到达数据库时正确格式化(如果您正好将数据从浏览器发布到数据库。这通常有助于对其进行排序:
$ dateForDB = DateTime :: createFromFormat(' d-m-Y',$ _POST [' whateverYourDateVariableIsCalled']); $ dateForDB = $ dateForDB->格式(' Y-m-d');
希望有所帮助:)
答案 4 :(得分:0)
(SELECT Top 1 REPLACE(CONVERT(CHAR(11), SendDate, 106),' ','-') FROM tbl_EmpDoc WHERE UniqueId=@UniqueId) AS SendDate