# Displaying the server time on a client

**URL:** <https://forum.inductiveautomation.com/t/displaying-the-server-time-on-a-client/1851>\
**Category:** Ignition\
**Created:** [May 18, 2010, 11:14am UTC](https://forum.inductiveautomation.com/t/displaying-the-server-time-on-a-client/1851 "2010-05-18T11:14:39Z")\
**Posts on this page:** 6\
**Page:** 1

<div class="post-metadata">

**Author:** ![AlThePal](https://sea1.discourse-cdn.com/inductiveautomation/user_avatar/forum.inductiveautomation.com/althepal/32/3603_2.png) [@AlThePal](https://forum.inductiveautomation.com/u/AlThePal)\
**Post date:** [May 18, 2010, 11:14am UTC](https://forum.inductiveautomation.com/t/displaying-the-server-time-on-a-client/1851/1 "2010-05-18T11:14:39Z")

</div>

I want to display the server time on the screen of each client. Using a Client tag, I can set its Datatype to DateTime and use`SELECT NOW()`to return the time from the server, formatting it using the Metadata Format property. However, if I try to do the same using a SQLTag DB tag, the tag fails with an EXPRESSION\_EVAL\_ERROR.

Is there any reason I can’t use a DB tag to do this? Is there any difference in using a Client tag versus a DB tag? (I thought using a DB tag would mean the database was only queried once each scan interval and the results passed to every client, rather than each client issuing its own query to the database.)

---

<div class="post-metadata">

**Author:** ![Travis.Cox](https://avatars.discourse-cdn.com/v4/letter/t/b9bd4f/32.png) [@Travis.Cox](https://forum.inductiveautomation.com/u/Travis.Cox)\
**Post date:** [May 18, 2010, 3:17pm UTC](https://forum.inductiveautomation.com/t/displaying-the-server-time-on-a-client/1851/2 "2010-05-18T15:17:27Z")

</div>

You have to select a database as the default to run queries in DB tags. So go into your gateway configuration section and select SQLTags -\> Realtime. Edit the default provider and attach it to your database. Once attached the query should run.

---

<div class="post-metadata">

**Author:** ![AlThePal](https://sea1.discourse-cdn.com/inductiveautomation/user_avatar/forum.inductiveautomation.com/althepal/32/3603_2.png) [@AlThePal](https://forum.inductiveautomation.com/u/AlThePal)\
**Post date:** [May 18, 2010, 3:22pm UTC](https://forum.inductiveautomation.com/t/displaying-the-server-time-on-a-client/1851/3 "2010-05-18T15:22:03Z")

</div>

Thanks Travis, that sorted it.

Am I correct in thinking a DB tag would be more efficient than a Client tag here? (By efficient I mean less reads of the relational database.)

---

<div class="post-metadata">

**Author:** ![Travis.Cox](https://avatars.discourse-cdn.com/v4/letter/t/b9bd4f/32.png) [@Travis.Cox](https://forum.inductiveautomation.com/u/Travis.Cox)\
**Post date:** [May 18, 2010, 3:36pm UTC](https://forum.inductiveautomation.com/t/displaying-the-server-time-on-a-client/1851/4 "2010-05-18T15:36:40Z")

</div>

Correct, it would only run once on the server and not on any clients.

---

<div class="post-metadata">

**Author:** ![AlThePal](https://sea1.discourse-cdn.com/inductiveautomation/user_avatar/forum.inductiveautomation.com/althepal/32/3603_2.png) [@AlThePal](https://forum.inductiveautomation.com/u/AlThePal)\
**Post date:** [May 18, 2010, 3:53pm UTC](https://forum.inductiveautomation.com/t/displaying-the-server-time-on-a-client/1851/5 "2010-05-18T15:53:32Z")

</div>

I’m trying to display the DB tag on-screen by dragging it to the window and choosing ‘Display/Label’. This binds the Text property of the label to the expression`dateFormat({Misc/serverTime}, {Misc/serverTime.FormatString})`This displays correctly in the Designer, but when I try to save the window I get the following error:`com.inductiveautomation.ignition.common.xmlserialization.SerializationException: Error during serialization for property 'propertyAdapters' on object '[FPMIWindow]Header'
	at com.inductiveautomation.ignition.common.xmlserialization.serialization.DefaultObjectSerializationDelegate.serializeProperties(DefaultObjectSerializationDelegate.java:291)
	at com.inductiveautomation.factorypmi.designer.xmlserialization.WindowDelegate.serializeProperties(WindowDelegate.java:37)
	at com.inductiveautomation.factorypmi.designer.xmlserialization.WindowDelegate.serialize(WindowDelegate.java:29)
	at com.inductiveautomation.ignition.common.xmlserialization.serialization.XMLSerializationContext.serialize(XMLSerializationContext.java:58)
	at com.inductiveautomation.ignition.common.xmlserialization.serialization.XMLSerializer.serialize(XMLSerializer.java:293)
	at com.inductiveautomation.factorypmi.designer.model.ObjectHolder.saveWindow(ObjectHolder.java:3316)
	at com.inductiveautomation.factorypmi.designer.model.ObjectHolder.commitWindow(ObjectHolder.java:3261)
	at com.inductiveautomation.factorypmi.designer.model.ObjectHolder.notifyProjectSaveStart(ObjectHolder.java:3543)
	at com.inductiveautomation.ignition.designer.IgnitionDesigner.handleSave(IgnitionDesigner.java:1100)
	at com.inductiveautomation.ignition.designer.IgnitionDesigner.access$2500(IgnitionDesigner.java:171)
	at com.inductiveautomation.ignition.designer.IgnitionDesigner$Handler.handleSaveAction(IgnitionDesigner.java:1652)
	at com.inductiveautomation.ignition.designer.IgnitionDesigner$Handler.access$1200(IgnitionDesigner.java:1245)
	at com.inductiveautomation.ignition.designer.IgnitionDesigner$Handler$6.actionPerformed(IgnitionDesigner.java:1360)
	at javax.swing.AbstractButton.fireActionPerformed(Unknown Source)
	at javax.swing.AbstractButton$Handler.actionPerformed(Unknown Source)
	at javax.swing.DefaultButtonModel.fireActionPerformed(Unknown Source)
	at javax.swing.DefaultButtonModel.setPressed(Unknown Source)
	at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(Unknown Source)
	at com.jidesoft.plaf.basic.BasicJideButtonListener.mouseReleased(Unknown Source)
	at java.awt.AWTEventMulticaster.mouseReleased(Unknown Source)
	at java.awt.Component.processMouseEvent(Unknown Source)
	at javax.swing.JComponent.processMouseEvent(Unknown Source)
	at java.awt.Component.processEvent(Unknown Source)
	at java.awt.Container.processEvent(Unknown Source)
	at java.awt.Component.dispatchEventImpl(Unknown Source)
	at java.awt.Container.dispatchEventImpl(Unknown Source)
	at java.awt.Component.dispatchEvent(Unknown Source)
	at java.awt.LightweightDispatcher.retargetMouseEvent(Unknown Source)
	at java.awt.LightweightDispatcher.processMouseEvent(Unknown Source)
	at java.awt.LightweightDispatcher.dispatchEvent(Unknown Source)
	at java.awt.Container.dispatchEventImpl(Unknown Source)
	at java.awt.Window.dispatchEventImpl(Unknown Source)
	at java.awt.Component.dispatchEvent(Unknown Source)
	at java.awt.EventQueue.dispatchEvent(Unknown Source)
	at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source)
	at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source)
	at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source)
	at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
	at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
	at java.awt.EventDispatchThread.run(Unknown Source)
Caused by: com.inductiveautomation.ignition.common.xmlserialization.SerializationException: Error during serialization for property 'expression' on object '[ExpressionPropertyAdapter] ---> Label'
	at com.inductiveautomation.ignition.common.xmlserialization.serialization.DefaultObjectSerializationDelegate.serializeProperties(DefaultObjectSerializationDelegate.java:291)
	at com.inductiveautomation.ignition.common.xmlserialization.serialization.DefaultObjectSerializationDelegate.serialize(DefaultObjectSerializationDelegate.java:312)
	at com.inductiveautomation.ignition.common.xmlserialization.serialization.XMLSerializationContext.serialize(XMLSerializationContext.java:58)
	at com.inductiveautomation.ignition.common.xmlserialization.serialization.DefaultObjectSerializationDelegate.writeCall(DefaultObjectSerializationDelegate.java:204)
	at com.inductiveautomation.ignition.common.xmlserialization.serialization.DefaultObjectSerializationDelegate.writeCall(DefaultObjectSerializationDelegate.java:193)
	at com.inductiveautomation.ignition.common.xmlserialization.serialization.delegates.MapDelegate.serializeElements(MapDelegate.java:42)
	at com.inductiveautomation.ignition.common.xmlserialization.serialization.delegates.MapDelegate.serialize(MapDelegate.java:32)
	at com.inductiveautomation.ignition.common.xmlserialization.serialization.XMLSerializationContext.serialize(XMLSerializationContext.java:58)
	at com.inductiveautomation.ignition.common.xmlserialization.serialization.DefaultObjectSerializationDelegate.writeCall(DefaultObjectSerializationDelegate.java:204)
	at com.inductiveautomation.ignition.common.xmlserialization.serialization.DefaultObjectSerializationDelegate.writeCall(DefaultObjectSerializationDelegate.java:193)
	at com.inductiveautomation.ignition.common.xmlserialization.serialization.DefaultObjectSerializationDelegate.doProperty(DefaultObjectSerializationDelegate.java:262)
	at com.inductiveautomation.ignition.common.xmlserialization.serialization.DefaultObjectSerializationDelegate.serializeProperties(DefaultObjectSerializationDelegate.java:289)
	... 39 more
Caused by: com.inductiveautomation.ignition.common.xmlserialization.SerializationException: Error during serialization for property 'children' on object '[FunctionExpression]com.inductiveautomation.ignition.common.expressions.FunctionExpression@1e9843a'
	at com.inductiveautomation.ignition.common.xmlserialization.serialization.DefaultObjectSerializationDelegate.serializeProperties(DefaultObjectSerializationDelegate.java:291)
	at com.inductiveautomation.ignition.common.xmlserialization.serialization.DefaultObjectSerializationDelegate.serialize(DefaultObjectSerializationDelegate.java:312)
	at com.inductiveautomation.ignition.common.xmlserialization.serialization.XMLSerializationContext.serialize(XMLSerializationContext.java:58)
	at com.inductiveautomation.ignition.common.xmlserialization.serialization.DefaultObjectSerializationDelegate.writeCall(DefaultObjectSerializationDelegate.java:204)
	at com.inductiveautomation.ignition.common.xmlserialization.serialization.DefaultObjectSerializationDelegate.writeCall(DefaultObjectSerializationDelegate.java:193)
	at com.inductiveautomation.ignition.common.xmlserialization.serialization.DefaultObjectSerializationDelegate.doProperty(DefaultObjectSerializationDelegate.java:262)
	at com.inductiveautomation.ignition.common.xmlserialization.serialization.DefaultObjectSerializationDelegate.serializeProperties(DefaultObjectSerializationDelegate.java:289)
	... 50 more
Caused by: com.inductiveautomation.ignition.common.xmlserialization.SerializationException: Error during serialization for property 'tagListenerDelegate' on object '[BoundTagExpression]com.inductiveautomation.ignition.common.expressions.BoundTagExpression@1e83643'
	at com.inductiveautomation.ignition.common.xmlserialization.serialization.DefaultObjectSerializationDelegate.serializeProperties(DefaultObjectSerializationDelegate.java:291)
	at com.inductiveautomation.ignition.common.xmlserialization.serialization.DefaultObjectSerializationDelegate.serialize(DefaultObjectSerializationDelegate.java:312)
	at com.inductiveautomation.ignition.common.xmlserialization.serialization.XMLSerializationContext.serialize(XMLSerializationContext.java:58)
	at com.inductiveautomation.ignition.common.xmlserialization.serialization.delegates.ArrayDelegate.serialize(ArrayDelegate.java:24)
	at com.inductiveautomation.ignition.common.xmlserialization.serialization.XMLSerializationContext.serialize(XMLSerializationContext.java:58)
	at com.inductiveautomation.ignition.common.xmlserialization.serialization.DefaultObjectSerializationDelegate.writeCall(DefaultObjectSerializationDelegate.java:204)
	at com.inductiveautomation.ignition.common.xmlserialization.serialization.DefaultObjectSerializationDelegate.writeCall(DefaultObjectSerializationDelegate.java:193)
	at com.inductiveautomation.ignition.common.xmlserialization.serialization.DefaultObjectSerializationDelegate.doProperty(DefaultObjectSerializationDelegate.java:262)
	at com.inductiveautomation.ignition.common.xmlserialization.serialization.DefaultObjectSerializationDelegate.serializeProperties(DefaultObjectSerializationDelegate.java:289)
	... 56 more
Caused by: com.inductiveautomation.ignition.common.xmlserialization.SerializationException: Error during serialization for property 'tagValue' on object '[TagListener]com.inductiveautomation.ignition.common.expressions.TagListener@150a604'
	at com.inductiveautomation.ignition.common.xmlserialization.serialization.DefaultObjectSerializationDelegate.serializeProperties(DefaultObjectSerializationDelegate.java:291)
	at com.inductiveautomation.ignition.common.xmlserialization.serialization.DefaultObjectSerializationDelegate.serialize(DefaultObjectSerializationDelegate.java:312)
	at com.inductiveautomation.ignition.common.xmlserialization.serialization.XMLSerializationContext.serialize(XMLSerializationContext.java:58)
	at com.inductiveautomation.ignition.common.xmlserialization.serialization.DefaultObjectSerializationDelegate.writeCall(DefaultObjectSerializationDelegate.java:204)
	at com.inductiveautomation.ignition.common.xmlserialization.serialization.DefaultObjectSerializationDelegate.writeCall(DefaultObjectSerializationDelegate.java:193)
	at com.inductiveautomation.ignition.common.xmlserialization.serialization.DefaultObjectSerializationDelegate.doProperty(DefaultObjectSerializationDelegate.java:262)
	at com.inductiveautomation.ignition.common.xmlserialization.serialization.DefaultObjectSerializationDelegate.serializeProperties(DefaultObjectSerializationDelegate.java:289)
	... 64 more
Caused by: com.inductiveautomation.ignition.common.xmlserialization.SerializationException: Error during serialization for property 'value' on object '[BasicTagValue][2010-05-18 16:49:51.0,GOOD_DATA]'
	at com.inductiveautomation.ignition.common.xmlserialization.serialization.DefaultObjectSerializationDelegate.serializeProperties(DefaultObjectSerializationDelegate.java:291)
	at com.inductiveautomation.ignition.common.xmlserialization.serialization.DefaultObjectSerializationDelegate.serialize(DefaultObjectSerializationDelegate.java:312)
	at com.inductiveautomation.ignition.common.xmlserialization.serialization.XMLSerializationContext.serialize(XMLSerializationContext.java:58)
	at com.inductiveautomation.ignition.common.xmlserialization.serialization.DefaultObjectSerializationDelegate.writeCall(DefaultObjectSerializationDelegate.java:204)
	at com.inductiveautomation.ignition.common.xmlserialization.serialization.DefaultObjectSerializationDelegate.writeCall(DefaultObjectSerializationDelegate.java:193)
	at com.inductiveautomation.ignition.common.xmlserialization.serialization.DefaultObjectSerializationDelegate.doProperty(DefaultObjectSerializationDelegate.java:262)
	at com.inductiveautomation.ignition.common.xmlserialization.serialization.DefaultObjectSerializationDelegate.serializeProperties(DefaultObjectSerializationDelegate.java:289)
	... 70 more
Caused by: com.inductiveautomation.ignition.common.xmlserialization.SerializationException: Unable to create clean copy of class java.sql.Timestamp
	at com.inductiveautomation.ignition.common.xmlserialization.serialization.XMLSerializer.getCleanCopy(XMLSerializer.java:379)
	at com.inductiveautomation.ignition.common.xmlserialization.serialization.XMLSerializationContext.getCleanCopy(XMLSerializationContext.java:79)
	at com.inductiveautomation.ignition.common.xmlserialization.serialization.DefaultObjectSerializationDelegate.serializeProperties(DefaultObjectSerializationDelegate.java:280)
	at com.inductiveautomation.ignition.common.xmlserialization.serialization.DefaultObjectSerializationDelegate.serialize(DefaultObjectSerializationDelegate.java:312)
	at com.inductiveautomation.ignition.common.xmlserialization.serialization.XMLSerializationContext.serialize(XMLSerializationContext.java:58)
	at com.inductiveautomation.ignition.common.xmlserialization.serialization.DefaultObjectSerializationDelegate.writeCall(DefaultObjectSerializationDelegate.java:204)
	at com.inductiveautomation.ignition.common.xmlserialization.serialization.DefaultObjectSerializationDelegate.writeCall(DefaultObjectSerializationDelegate.java:193)
	at com.inductiveautomation.ignition.common.xmlserialization.serialization.DefaultObjectSerializationDelegate.doProperty(DefaultObjectSerializationDelegate.java:262)
	at com.inductiveautomation.ignition.common.xmlserialization.serialization.DefaultObjectSerializationDelegate.serializeProperties(DefaultObjectSerializationDelegate.java:289)
	... 76 more
`When I delete the binding the window saves without error.

---

<div class="post-metadata">

**Author:** ![Carl.Gould](https://sea1.discourse-cdn.com/inductiveautomation/user_avatar/forum.inductiveautomation.com/carl.gould/32/7262_2.png) [@Carl.Gould](https://forum.inductiveautomation.com/u/Carl.Gould)\
**Post date:** [May 18, 2010, 6:23pm UTC](https://forum.inductiveautomation.com/t/displaying-the-server-time-on-a-client/1851/6 "2010-05-18T18:23:51Z")

</div>

This is fixed for the next release.
